2016-11-15 5 views
0

AccountIT 테스트를 실행할 때 새 계정을 유지하는 데 문제가 있습니다. 내가 얻는 오류는 다음과 같습니다@OneToOne @entity로 java 지속

javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: no.phasfjo.dto.Customer

나는 그것이 @OnToOne 주석과 뭔가를 가지고 그림,하지만 난 제대로을 변경하는 방법을 알아낼 cannott? 내가 전화했을 때

http://pastebin.com/w4z8PArY

+0

javax.persistence.PersistenceException : org.hibernate.PersistentObjectException : persist에 전달 된 분리 된 엔티티 : no.phasfjo.dto.Customer. no.phasfjo.infrastructure.account.JpaAccountDao.persist (JpaAccountDao.java:26), – Paul

답변

0

어제 나는이 오류를했다 : entityManager.persist(...); 이미 저장된 (따라서 그것이 ID가) 개체에 대한. 이 문제를 해결하기 위해 entityManager.persist(...)을 호출하지 않아도되지만 entityManager.merge(...)을 호출해야합니다. 어쩌면 이것은 a.t.m과 같은 문제 일 것입니다.

합니다 (페이스트 빈 정말 내가 맞다 ... 진짜 문제가 무엇인지 보여, 그래서 같은데요하지 않는 이유는 무엇입니까?)

+0

Hii Jeroen, 죄송합니다. 모든 오류 메시지를 넣지 않았습니다. 나는 그것을 바꾸려고 노력할 것이다. 하지만 같은 오류가 발생합니다 : 분리 된 엔티티가 persist : no.phasfjo.dto.Customer에 전달되었습니다. – Paul

+0

고객 등급 : http://pastebin.com/3XLNT1L5 – Paul

+0

내가 다시 귀하의 pastebin을 확인 ... 아직도 나는 문제가 안되지만 ...하지만 어쩌면 .... toString()은 다음 두 줄을 가지고 있습니다 : 고객 = "+ 고객 +'\ n'", 고객 = ' "+ 로그인 +'- 로그인하지 않아야합니까 =? –

0

이것은 당신이 @OneToOne 주석을 오용 될 수 있다는 사실과 관련이있다. JPA @OneToOne에서 기본 키는 Customer이고 기본 키는 Account이고 다시 Login입니다. 그들은 일대일 방식이기 때문에 서로간에 독립적으로 존재할 수 없으며 최대한 빨리 이러한 오류가 발생하기 시작할 수 있습니다.

당신은 두 가지 옵션,

  • 변화가 아니라 테스트에 CustomerLogin을 지속 그것들을 초기화 한 후 CustomerLogin으로 Account를 인스턴스화하고 마지막으로 전화 한 번만 유지되지 않습니다 @OneToMany 또는
  • 로 주석을 Account에 있고 Customer 또는 Login에 결코 도달하지 마십시오.
+0

감사합니다. 나는 약간의 논리적 인 문제가있다. 이것은 데모 웹샵 프로젝트이기 때문에. 엔티티 간의 관계를 파악하려고합니다. 하나의 계정은 하나의 고객 (하나의 로그인 서비스 (사용자 이름, 암호))을 보유합니다. 그게 맞는 것 같니? – Paul

+0

Btw - 인스턴스화 작업을 수행 한 다음 계정 만 유지합니다. 고맙습니다, 해결 된 질문 =) – Paul

+0

기본적으로 부모 개체가 없으면 자식 개체가 존재할 수 없다고 생각할 때만'@ OneToOne' 매핑을 사용합니다. 예를 들어'Account' 또는'Customer'가 없으면'Login'이 절대로 존재해서는 안되기 때문에'@ OneToOne'은 자식 객체를 독립적으로 저장하지 말아야한다는 것을 기억해야합니다. – aorticDefiance