질문과 문제는 매우 간단합니다.하지만 성가신 내용이지만 글로벌 솔루션을 찾고 있습니다. 응용 프로그램 전반에 걸친 문제입니다.엔티티를 추가해도 상위 콜렉션이 새로 고쳐지지 않습니다.
아래의 코드는 실제로 흥미롭지 않지만 명확히하기 위해 게시합니다!우리는 JPA 2.0과 함께 PostgreSQL 데이터베이스를 사용하고 우리는 모든 facades와 엔티티를 생성했습니다. 물론 편집을 했었지만 실제로는 그렇지 않았습니다.
문제는 모든 엔티티에 자식 컬렉션이 포함되어 있지만 (우리 만 해당) 은 자식 요소 인이 자식 요소로 업데이트되지 않습니다. 개체는 데이터베이스에 기록되므로 쉽게 선택할 수 있지만 실제로보고 싶은 것은 부모 개체에있는 새로 고침 된 자식 컬렉션입니다.
왜 이런 일이 발생합니까? 우리가 (수동으로) 부모 em.refresh(parent)
의 엔티티를 새로 고침하면 트릭을 수행하지만 Facades에서 많은 작업이 이루어질 것입니다. 하지만 다른 방법이 없을 수도 있습니다.
감사합니다.
/* EDIT */
나는 그것이 어떤 주석 문제 나 캐시 또는 뭔가하는 생각,하지만 난 이미
@OneToMany(mappedBy = "idquestion", orphanRemoval=true, fetch= FetchType.EAGER)
및
@Cacheable(false)
을 시도했습니다 didn를 ' 제대로 작동하지 않습니다.
/* 이해 EDIT */
일부 샘플 코드.
데이터베이스 레벨 :
CREATE TABLE Question (
idQuestion SERIAL,
questionContent VARCHAR,
CONSTRAINT Question_idQuestion_PK PRIMARY KEY (idQuestion)
);
CREATE TABLE Answer (
idAnswer SERIAL,
answerContent VARCHAR,
idQuestion INTEGER,
CONSTRAINT Answer_idAnswer_PK PRIMARY KEY (idAnswer),
CONSTRAINT Answer_idQuestion_FK FOREIGN KEY (idQuestion) REFERENCES Question(idQuestion)
);
우리가 그들 모두 유사, 넷빈즈 7.1에서 일부 엔티티를 생성 한보다 :
이@Entity
@Table(name = "question", catalog = "jobfairdb", schema = "public")
@XmlRootElement
@NamedQueries({ BLAH BLAH BLAH...})
public class Question implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@NotNull
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "idquestion", nullable = false)
private Integer idquestion;
@Size(max = 2147483647)
@Column(name = "questioncontent", length = 2147483647)
private String questioncontent;
@OneToMany(mappedBy = "idquestion", orphanRemoval=true)
private Collection<Answer> answerCollection;
Getters... setters...
우리가 사용 (다시) 그들을 위해 외관을 생성, 모두 구현 AbstractFacade
like :
public abstract class CCAbstractFacade<T> {
private Class<T> entityClass;
public CCAbstractFacade(Class<T> entityClass) {
this.entityClass = entityClass;
}
protected abstract EntityManager getEntityManager();
public void create(T entity) {
getEntityManager().persist(entity);
}
세상에 ... 오, 그래 그 사실 트릭을 할 것입니다 :의 를하지만 내가 생각하는 것이 ... 너무 어려운 일부 @annotation와 Bidarectional 연결을 구현하는 방법은 없습니다 엔티티에? CMT를 지금 사용하는지 확실하지 않습니다. D – Atais