업데이트 얻지 않고, 나는이 두 가지를 포함한 여러 주체가 :자바 EE 엔티티는 데이터베이스 데이터
엔티티 제품 (발췌문) :
@Entity
public class Product implements Serializable {
@ManyToMany(mappedBy = "products")
private List<KB> kbs;
public List<KB> getKbs() {
return kbs;
}
}
법인 KB를 (K nowledge B ASE 기사) (발췌문) :
@Entity
public class KB implements Serializable {
@ManyToMany
private List<Product> products;
}
당신이 알 수 있으며, 그들은 bidirecti 있습니다 그래서 JPA는 Product, KB 및 KB_Product의 세 테이블을 생성했습니다.
나는 또한 EJB의이 엔티티에 의해 지속 데이터에 액세스하기 위해 관리 콩, 여기에 내가 특정 제품과 관련된 KB의 목록을 검색하는 데 사용하는 코드의 조각이다가:
@SessionScoped
public class ProductController {
private List<KB> associatedKBs;
public List<KB> getAssociatedKBs() {
this.associatedKBs = current.getKbs();
return associatedKBs;
}
}
모든 확인을 작동 : KB에 제품을 연결할 때 데이터베이스 (KB_Product 테이블)에 삽입되지만 getKBs() 메서드는 처음으로 호출 할 때만 업데이트 된 데이터를 반환합니다.
예 :
1. "컴퓨터"라는 제품을 만듭니다.
2. 새 KB 기사를 만들고이 KB와 "컴퓨터"를 연결합니다.
3.이 연결은 KB_PRODUCT 테이블에서 유지됩니다.
4. getKBs()가 처음으로 호출됩니다. 모든 것이 OK입니다.
5. 두 번째 KB 기사를 만들고이를 "컴퓨터"와 연결합니다.
6.이 연결은 KB_PRODUCT 테이블에서 유지됩니다.
7. getKBs()가 다시 호출되지만 응용 프로그램을 다시 배포 할 때까지 첫 번째 연결 만 반환합니다. 재배포 후에 모든 것이 나타납니다.
편집 : 처음에는 세션 문제라고 생각했습니다. 애플리케이션에서 로그 아웃 한 후 다시 로그인해도 문제가 해결되지 않고 재배포 만 가능합니다.
미리 감사드립니다.