2016-07-27 67 views
2

我有一個由兩個列Hibernate 5.x刪除基於部分複合ID的記錄?

@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 
} 

的嵌入式複合鍵有隻使用colB值如

Serializable id = new String(myColBValue); 

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

什麼辦法可以刪除一個持久化對象還是我不得不求助於使用HQL語句?

回答

1

如果您需要2列來識別MyObject,那麼只提供一個將不足以查找每次唯一的結果。 SessionEntityManager都不提供您正在查找的方法。你必須去CriteriaQuery

+0

好吧,但如何使用hql現在刪除? PK是我實體對象中的一個私有實體。似乎它無法解析列。由於缺乏文檔,Hibernate 5比麻煩更麻煩。 session.createQuery( 「從MyObject來刪除其中PK.colB =:COLB」) \t \t \t \t \t \t \t \t \t .setParameter( 「COLB」, 「foobar的」) \t \t \t \t \t \t \t \t \t .executeUpdate ();在「無法執行語句」錯誤中重試 –