2017-01-25 2 views
0

データを重複させないようにしたい(データをObject(Company.java)に変換し、Hibernateを介してテーブルに格納する)。テーブルの既存のエントリをHibernateエンティティオブジェクトに変換する

新しいデータが入力されるたびに、クエリを使用してすべてのエントリと照合します。この場合、私はuniquiResult()メソッドを使用して、データがすでにテーブルに入っているかどうかを確認しています。

データが既に存在しない場合は、データで新しいCompanyオブジェクトを作成し、Companyオブジェクトをセッションに保存します。

データが既に存在する場合、既存のエントリを取得してオブジェクトにするにはどうすればよいですか?

私のコードは以下の通りです:

  Company company; 
      if(session 
        .createQuery("from company where company_name=:placeholder") 
        .setParameter("placeholder", data.getCompanyName()) 
        .uniqueResult() 
        !=null){ 
       company = ????; 
      } else { 
       company = new Company(data.getCompanyName()); 
       session.save(company); 
      } 

感謝。あなたはHibernateのSessionのドキュメントに見れば、それはあなたのクエリを実行すなわち

答えて

1
Company company = session 
        .createQuery("from company where company_name=:placeholder") 
        .setParameter("placeholder", data.getCompanyName()) 
        .uniqueResult(); 


if(company == null) { 
    company = new Company(data.getCompanyName()); 
    session.save(company); 
} 
1

Object uniqueResult() 
     Convenience method to return a single instance that matches the query, or null if the query returns no results. 

オブジェクト、データベースからレコードを取得し、あなたのためのオブジェクトにそれを回します。

あなたが探しているコードは次のとおりです。

Company company = session.createQuery("from company where company_name=:placeholder") 
       .setParameter("placeholder", data.getCompanyName()) 
       .uniqueResult() 
       !=null; 
if(company == null) { 
    company = new Company(data.getCompanyName()); 
    session.save(company); 
} 
関連する問題