GWT 해결 프로그램 특성의 관계를 해결할 수없
-
12-12-2019 - |
문제
내 GXT 를 사용하여 프로젝트 JPA 에 대한 지속성,그러나 내가 직면하는 문제 bidirectionnal 관계를 지속성을 알려준다.
내가 그 두체:
@Entity
@Table(name = "ACTV_REQ", catalog = "erpdb")
@AttributeOverride(name = "id", column = @Column(name = "ID", nullable = false, columnDefinition = "BIGINT UNSIGNED"))
@NamedQueries(value = {
@NamedQuery(name = "findByPerson", query="select object(m) from ActvReq m where m.people= :people")
})
public class ActvReq extends BaseEntity {
@ManyToOne
@JoinColumn(name = "PPL_ID")
@NotNull
private People people;
@ManyToOne
@JoinColumn(name = "ACTV_TYP_ID")
private ActivityTyp actvTyp;
@ManyToOne
@JoinColumn(name= "PPL_ACTV_RIGHT_ID")
private PeopleActvRight pplActvRight;
@Column(name = "DESCR")
private String desc;
}
고:
@Entity
@Table(name = "PPL_ACTV_RIGHT", catalog = "erpdb")
@AttributeOverride(name = "id", column = @Column(name = "ID", nullable = false, columnDefinition = "BIGINT UNSIGNED"))
@PeopleActvRightBeanConstraint
@NamedQueries(value = {
@NamedQuery(name = "findByPeople", query="select object(m) from PeopleActvRight m where m.people= :people")
})
public class PeopleActvRight extends BaseEntity {
@ManyToOne
@JoinColumn(name="ACTV_TYP_ID")
@NotNull
ActivityTyp type;
@ManyToOne
@JoinColumn(name="PPL_ID")
@NotNull
People people;
@ManyToOne
@JoinColumn(name="ACTV_RIGHT_ID")
ActvRight actvRight;
@OneToMany(mappedBy="pplActvRight",cascade=CascadeType.ALL)
private List<ActvReq> actvRequests = new ArrayList<ActvReq>();
}
(하지 않았을 복사현 하지만 보도 thoses 방법이 존재합니다.)
지속 ActvReqProxy,그것은 기본적으로 수행하는 방법에 내 EditorPresenter:
getRequestContext().persistAndReturn(getModel()).with("actvTyp","people","pplActvRight").fire(new Receiver<M>() {
@Override
public void onSuccess(M response) {
unsetContext();
onSaveSuccess( response );
}
});
고 응답 pplActvRight 이미 null 에서 응답을 얻을하지만,getModel()pplActvReqProxy 설정한다.
서버 측에서 나는 서비스는 다음과 같은 방법의 내 DAO:
public ActvReq persistAndReturn(ActvReq entity){
em.getTransaction().begin();
em.persist(entity);
em.close;
return entity;
}
과를 유지 ActvReqProxy 에서 내 편집기를 사용하는 방법으로("pplActvRight","사람",actvType"),I 지 않는 어떤 오류가 발생하지만,내 DB entity 은 전적으로 유지됩니다.내 말은 새로운 ActvReq 만들에서 DB 그러나 분야 PPL_ACTV_RIGHT_ID null 로 유지합니다.(잘 작동한 사람들과 actvTyp)
편집:사실 나는 가정의 문제에 위치한 GWT 해결책에 resolveDomainValue,그것을 해결할 수 없는 특성 pplActvRight.그럼 내 EntityProxy 개체를 존재하지 않는 서버입니다.
어떤 아이디어가?
해결책
그래서 시작 부분에서의 persistAndReturn
서버 측에서 그것은 이미 null
?그렇다면,적어도 우리가 알고있는 그것은 JPA.
고 있는 클라이언트 측에서 그것은 설정하는 다른 뭔가 null
에 프록시 호출하기 전에 persistAndReturn
?당신은 쉽게 확인할 수 있다:Eclipse 를 사용하여 디버거를 참조하는 것이 가능하 JSON 코드는 프록시가 있는 직렬화(하나의 필드의 프록시는 당신이 볼 수 있을 선택하면 프록시는 객체에 디버거).는지 확인하십시오 pplActvRight
키가 있으로 null 이 아닌 값입니다.
그렇다면,어쩌면 당신은 당신 디버그 GWT 소스 코드를 변환하는 프록시하는 서버측 엔티티를 확인하는 무엇이 진행되고 있는지와 그 pplActvRight
산(지 않는 이유는 무엇입니까 할당하여 해당 ActvReq
서버 측의 인스턴스).나는 무엇을 기억할 수 없는 클래스 이름을 하는 이 물건이었다 하지만 당신은 할 수 없이 그것을 찾을 찾을 수 있습니다.