2017-11-03 8 views
0

基本的には、ユーザーが存在するかどうかをチェックしたい新しいオブジェクトsettingsで更新したいのですが、私は更新条項に立ち往生した。これどうやってするの??データベース行を更新する方法

私はを更新します。すべてのデータは設定から​​だけです。

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(); 
    } 
} 

答えて

1
Query query = session.createQuery("update settings set user = :user"); 
query.setParameter("user",user); 
int result = query.executeUpdate(); 

私はこのアップデートは新しいユーザー(文字列値)にすべての行を更新しますので、クエリのWHERE句があるように起こっている願っています。

+0

私はそのユーザーだけを更新したくありません。 – asdasd

+0

**私は自分のコードをよく理解するように更新しました** – asdasd

+0

しかし、あなたは関数に 'String user'を渡しています、それは文字列ではありません? –

関連する問題