Java EE 프로젝트에서 PostgreSQL 데이터베이스와 함께 EclipseLink를 사용하고 있습니다. oneToMany/manytoOn 연관의 일부인 엔티티를 유지/새로 고침 할 때 올바른 동작을위한 올바른 주석을 찾는 데 어려움이 있습니다.EclipseLink 지속성 및 새로 고치기 두 연관 엔티티
예를 들어 UI를 통해 사용자가 처음 만든 엔티티 "프로젝트"가 있습니다. 그런 다음 사용자는 자신이 만든 프로젝트에 "분석"을 추가 할 수 있습니다. 따라서 분석은 하나의 프로젝트의 일부이며 프로젝트는 여러 가지 분석을 수행 할 수 있습니다. 지속 작업이 잘 작동합니다 (데이터베이스의 프로젝트와 관련된 새 분석이 표시됨).하지만 "getProject (idProject)"를 호출하고 분석 목록을 표시하면 새로 고침 된 목록을 볼 수 없습니다.
어떻게해야합니까?
현재 주석은 다음과 같습니다
// bi-directional many-to-one association to Analyse
@OneToMany(mappedBy = "projet", cascade = { CascadeType.ALL })
private Set<Analyse> analyses;
Analyse.java
//bi-directional many-to-one association to Projet
@ManyToOne(cascade={CascadeType.MERGE, CascadeType.REFRESH})
@JoinColumn(name="id_projet", nullable=false)
private Projet projet;
코드에서 Projet.java에서 새로운는 "분석"지속 :
public boolean insertAnalyse(Analyse analyse) {
System.out.println("insertAnalyse");
boolean success = true;
fac = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
em = fac.createEntityManager();
try {
em.getTransaction().begin();
em.persist(analyse);
em.getTransaction().commit();
}
catch (Exception ex) {
em.getTransaction().rollback();
System.out.println("*** Erreur in MeansDAO. insertAnalyse() : "
+ ex.getMessage());
success = false;
} finally {
em.close();
}
return success;
}
코드 프로젝트 ID별로 현재 프로젝트를 검색하는 방법 :
public Projet getProject(String p) {
System.out.println("getProject");
Projet project = null;
fac = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT);
em = fac.createEntityManager();
try {
em.getTransaction().begin();
StringBuilder sql = new StringBuilder();
Projet proj = em.find(Projet.class, Integer.parseInt(p));
if (proj != null) {
project = proj;
}
} catch (Exception ex) {
em.getTransaction().rollback();
System.out.println("*** Erreur in MeansDAO. getProject() : "
+ ex.getMessage());
} finally {
em.close();
}
return project;
}
감사합니다.
감사합니다! 사실, 나는 그것이 만들어 질 때 "분석"안에 "projet"을 설정했지만 "계단식 (cascade)"주석이 적당 할 때 (나는 그것을 어딘가에서 읽었다) 생각하기 때문에 "분석"을 "projet"에 추가하지 않는다. 그것을 자동으로 설정 했어 ... 그럼, 아닐 수도 있니? 그 동안 "getProject"함수에서 코드를 변경하려고 시도했으며 올바른 "projet"+ "projet"의 새로 고침을 선택하고 올바른 결과를 얻었습니다 ("분석"이 모두 있습니다). .. 너 한테 잘못한 소리 야? 도와 주셔서 다시 한 번 감사드립니다! – Coralie
나는 똑같은 문제에 직면하고있다. plz는 어떻게 해결할 수 있을까? –