2016-07-27 5 views
2

난 단지 colB 값과 같은부분적인 composite id에 기반한 Hibernate 5.x 레코드 삭제?

Serializable id = new String(myColBValue); 

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

를 사용하여 I 영구 개체를 삭제할 수있는 방법이 있나요이 열

@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 ​​개의 열이 필요한 경우, 하나만 제공하면 매번 고유 한 결과를 검색하기에 충분하지 않습니다. Session이나 EntityManager도 원하는 방법을 제공하지 않습니다. Criteria 또는 Query으로 가야합니다.

+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(); "명령문을 실행할 수 없습니다"오류가 발생합니다. –