我有一个包含两列的嵌入式复合键

@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语句?

最佳答案

如果您需要2列来标识MyObject,则仅提供一列不足以每次都查找唯一的结果。 SessionEntityManager都不提供您要查找的方法。您必须使用CriteriaQuery

10-08 02:49