문제

내 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 서버 측의 인스턴스).나는 무엇을 기억할 수 없는 클래스 이름을 하는 이 물건이었다 하지만 당신은 할 수 없이 그것을 찾을 찾을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top