임은 JPA manytoone 관계와 혼동합니다. 나는 'judgies'가 많은 클래스 'judgment'를 가지고 있는데, postgres db에 판단 인스턴스를 저장하려고하면 다음과 같은 오류 메시지가 나타납니다.hibernate 객체는 저장되지 않은 일시적인 인스턴스를 참조합니다.
Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.dyihi.evaluation.model.Judgement.judge -> com.dyihi.evaluation.model.User
판단 클래스 :
@Entity
@Table(name = "JUDGEMENTS")
public class Judgement implements Serializable, Cloneable {
/**
*
*/
private static final long serialVersionUID = -7049957706738879274L;
@ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumn(name = "user_id")
private User judge;
내 서비스 클래스 :
public Long store(Judgement judgement) throws RepositoryException {
EntityManager em = null;
EntityTransaction tx = null;
try {
em = _emf.createEntityManager();
tx = em.getTransaction();
tx.begin();
em.persist(judgement);
tx.commit();
return judgement.getId();
}
finally {
if (tx != null && tx.isActive()) {
tx.rollback();
}
if (em != null) {
em.close();
em = null;
}
}
}
그리고 내 DB에 내가 판단 Judgment and User가 있는데, ManyToOne 관계에 대해 Judgement_User 테이블을 생성해야합니까?
귀하의 코드는 판사가 많은 판단을하고 있음을 나타냅니다. 다른 방법은 아닙니다. – kem
새로운 판단과 새로운 사용자를 동시에 작성하고 있습니까? – kem
@kem : admin 사용자가 사용자를 만들었습니다. 사용자가 시스템에 로그인 할 때 판단을해야하기 때문에 새로운 판단을 작성하고 기존 사용자를 해당 판단의 판사로 지정하고 동시에 작성하지 마십시오. 또한 내가 판단을 지우고 싶다면 사용자는 전혀 손을 대지 않아야합니다. – user468587