2016-07-27 62 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 ();在“无法执行语句”错误中重试 –