IRC에서 EJB 업데이트 방법으로 엔티티의 관계를 병합 할 때 복사 된 하위 목록을 작성해야한다고 들었습니다. 내 질문은 : 이것은 정말로 필요한가? 로JPA merge()를 관계 (eclipselink, glassfish 3.1)로 안전하게 사용하기
여기 내 코드의 ...
public CtCase update(CtCase pCase)
{
CtCase aCtCase = em.merge(pCase);
...
List<CtCaseTest> aCaseTestList = pCase.getCaseTests();
List<CtCaseTest> aNewCaseTestList = new ArrayList<CtCaseTest>();
for(CtCaseTest aCaseTest : aCaseTestList)
{
aCaseTest = em.merge(aCaseTest);
aNewCaseTestList.add(aCaseTest);
}
aCtCase.setCaseTests(aNewCaseTestList);
...
return aCtCase;
}
(CtCaseEJB에서)
는 관계가 정의됩니다private List<CtCaseTest> mCaseTests = new ArrayList<CtCaseTest>();
@OneToMany(mappedBy = "ctCase", cascade = { CascadeType.PERSIST, CascadeType.REFRESH })
@OrderBy("rank")
public List<CtCaseTest> getCaseTests()
{
return mCaseTests;
}
public void setCaseTests(List<CtCaseTest> pCaseTests)
{
mCaseTests = pCaseTests;
}
이것은 어떻게
(CtCase에서) I 현재 나는 그것을하고있다. 비록 내가 아주 우발적 인 우스꽝스러운 행동을하고있다. 어떻게 든 창조됨).
내 질문은 : 왜 CascadeType.MERGE을 추가 할 수 없습니다 단순히 CtCaseEJB에서이 작업을 수행 ...
public CtCase update(CtCase pCase)
{
return em.merge(pCase);
}
왜 수동으로 JPA/EJB의 관계를 통합의 필요성?
감사합니다. JPA의 setList() 메소드에서 항상 복사 생성자를 사용하는 것을 일반적인 원칙으로 말하고 있습니까? 또는이 인스턴스는 구체적입니다. – teefal
일반적으로 예. – esej
equals() 및 hashcode()가 엔티티 고유 ID (존재하는 경우)를 사용하는 것이 좋으며, 고유 값을 지정하지 않을 수도 있습니다 (아직 입력하지 않은 경우). – teefal