Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更新数据库行_Java_Hibernate - Fatal编程技术网

Java 如何更新数据库行

Java 如何更新数据库行,java,hibernate,Java,Hibernate,基本上我想检查用户是否存在,我想用新的对象设置更新。我被更新条款卡住了。我该怎么做 我想更新设置中的所有数据,而不仅仅是用户字符串 Settings settings = new Settings(); settings.setBaselineImg(baselineImg); settings.setGitlabUrl(gitlabUrl); settings.setGitlabToken(gitlabToken); settings.setProfile

基本上我想检查用户是否存在,我想用新的对象设置更新。我被更新条款卡住了。我该怎么做

我想更新设置中的所有数据,而不仅仅是用户字符串

   Settings settings = new Settings();
    settings.setBaselineImg(baselineImg);
    settings.setGitlabUrl(gitlabUrl);
    settings.setGitlabToken(gitlabToken);
    settings.setProfileProject(profileProject);
    settings.setWebCSRProject(webCSRProject);
    settings.setWebAdminProject(webAdminProject);
    settings.setWebClientProject(webClientProject);
    settings.setDockerHostname(dockerHostname);
    settings.setDockerIP(dockerIP);
    settings.setDockerPort(dockerPort);
    settings.setUser(user);

    //if settings for this user already exist just Update them
    CheckIfSettingsForUserExist(user,settings);
    //else Add to database
    ManageDatabase.AddToDatabase(settings);

}

private static void CheckIfSettingsForUserExist(String user, Settings settings) {
    SessionFactory factory = HibernateUtil.GetSessionFactory();
    Session session = factory.openSession();
    Transaction tx = session.beginTransaction();
    try {
        String hql = "FROM Settings s WHERE s.user = :user";
        Query query = session.createQuery(hql);
        query.setParameter("user",user);
        //If settings for user already exist
        if(query.list().size() > 0)
        {
            //Update
            String hqlUpdate = "UPDATE FROM Settings";
            Query queryUpdate = session.createQuery(hqlUpdate);
            queryUpdate.setParameter("user", user);

        }
        tx.commit();
    } catch (HibernateException e) {
        if (tx!=null) tx.rollback();
        e.printStackTrace();
    }finally {
        session.close();
    }
}

我希望查询中会有where子句,因为此更新会将所有行更新为新的用户字符串值。

我不想只更新用户。我想用有很多参数的对象设置进行更新,但是你正在函数中传递字符串user,不是吗?现在请检查我的代码。我想用新数据更新所有数据。类似于使用新设置更新设置,其中user=:usersettings.setUseruser;这里是用户字符串?然后将所有详细信息更新为更新设置col_1=col_1\u new_值,col_2=col2\u new_值。。。。。。。其中user=:user
Query query = session.createQuery("update settings set user =  :user");
query.setParameter("user",user);
int result = query.executeUpdate();