나는 Hibernate 3.6 Final, Guice-persist 및 JPA2를 사용한다.JPA2 + Hibernate + Guice-persist : 버전 동작
이렇게 좋게 구성 했으므로 콩에는 getter와 setter가있는 @Version private Long version;
이 있습니다.
모든 필드와 함께 equals 및 hashcode를 구현했습니다.
저장 방법 내 DAO이다 : 나는 이름을 변경하고 다시 저장하려고하면, 나는 "StaleObjectstateException을 가지고, 그리고
Product p = new Product("name"); //id=null, version=null
dao.save(p); //works, id!=null, version=0
Product p2 = new Produto(10, 0, "other name"); //id, version, name
dao.save(p2); //works, but the version isnt updated, so my version still 0
: 내가 좋아하는 뭔가를 할 경우,
@Transactional
public void save(Product p){ em.persist(p); }
그러나 행이 업데이트되거나 삭제 된 이유는 ... "...
개체를 저장할 때 엔티티 관리자가 버전을 업데이트하기 위해해야 할 일이 무엇인지 알고 싶습니다. 왜이 작업을 계속하지 않았습니까?
미리 감사드립니다.
을 흠 ... 내가 이해 .. 문제는 그래서 .. 내가 GWT를 사용, 그래서 DTO의에 변환을 할 필요가 등이다, 나는 보여주는 예제와 같은 것을해야한다. 이것을 해결할 좋은 방법에 대한 아이디어가 있는가? 사실, 나는 bean을 반환하는 "save"메소드를 만들었고, persist 또는 merge를 호출하는지, 병합을 호출 할 때, 또한 플러시를 수행 한 다음 빈을 리턴 하는지를 결정합니다. 이 방법은 작동하지만 추한 ... BTW, 답변 주셔서 감사합니다 :) – caarlos0
죄송합니다, GWT/GIN 경험이 없습니다. 일반적으로 독립된 엔티티에서는 적절한 DTO를 만들 수 있지만 현재 사용 사례에 대해 특별한 특성이 필요한지 여부는 알 수 없습니다. – esej