2016-07-27 5 views
2

私はcolB値など部分的複合IDに基づいてHibernate 5.xレコードを削除しますか?

Serializable id = new String(myColBValue); 

Object persistentInstance = session.get(MyObject.class, id); 
if (persistentInstance != null) { 
      session.delete(persistentInstance);  
} 

を使用して、私は永続オブジェクトを削除することができますどのような方法があります2つの列

@Embeddable 
public static class PK implements Serializable { 

    private static final long serialVersionUID = 4049628068378058196L; 

    @Column(name="colA", length=32, nullable=false) 
    private String colA; 

    @Column(name = "colB", length=32, nullable=false) 
    private String colB; 

    //constructors/getters/setters 
} 

で構成されて埋め込まれた複合キーを持っているか、私はに頼らなければなりませんのHQL文を使用していますか?

答えて

1

MyObjectを識別するために2つの列が必要な場合は、1つだけを指定するだけで毎回一意の結果を検索するには不十分です。 SessionEntityManagerも、お探しの方法を提供していません。 CriteriaまたはQueryとする必要があります。

+0

大丈夫ですが、hqlを使用して今すぐ削除するにはどうすればよいですか? PKは私のエンティティオブジェクト内のプライベートエンティティです。列を解決できないようだ。 Hibernate 5は実際にはドキュメントの欠如による作業よりもトラブルです。 session.createQuery( "PK.colB = MyObjectにから削除:COLB") \t \t \t \t \t \t \t \t \t .setParameter( "COLB"、 "foobarに") \t \t \t \t \t \t \t \t \t .executeUpdate (); 「ステートメントを実行できませんでした」というエラーが表示される –

関連する問題