2013-08-26 3 views
0

JPA와 올바른 주석에 많은 문제가 있으며 @JoinColumn, mappedBy 등과 같은 많은 주석과 조합을 시도했지만 여전히 오류가 발생합니다. 나는 EclipseLink (JPA 2.1)를 사용한다.JPA : 몇 가지 관계

@Entity 
public class PointCoordinates extends BaseEntity { 

    @NotNull 
    private float long; 

    @NotNull 
    private float lat; 

    @OneToOne(mappedBy="pointCoordinates") 
    private Store store; 
    ... 
} 

그리고이 '쇼핑몰'의 '@OneToMany "클래스 중 하나입니다 :

@Entity 
public class Store extends BaseEntity { 

    @NotNull 
    private String name; 

    @NotNull 
    @OneToMany 
    private List<Price> listPrices; 

    @NotNull 
    @OneToMany 
    private List<BusinessHours> listBusinessHours; 

    @NotNull 
    @OneToOne 
    @JoinColumn(name="store_id") 
    private PointCoordinates pointCoordinates; 
... 
} 

이 클래스 PointCoordinates입니다 :

나는 소유자 클래스 스토어가

@Entity 
public class BusinessHours extends BaseEntity { 

    private Boolean holiday; 

    @ManyToOne 
    private Store store; 
    ... 
} 

'Store'가 'PointCoordinates'의 소유자이므로 att에 주석을 달아야하기 때문에 효과가 있다고 생각했습니다. (글래스 피시 3.1.2.2에

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Fehler beim Zuweisen einer Verbindung. Ursache: java.lang.IllegalStateException: Lokale Transaktion enthält bereits 1 Nicht-XA-Ressource: weitere Ressourcen können nicht hinzugefügt werden. Error Code: 0 Call: INSERT INTO POINTCOORDINATES (ID, LAT, LONG) VALUES (?, ?, ?) bind => [3 parameters bound]

오류 메시지 글래스 피쉬 4.0

오류 메시지 : @OneToOne(mappedBy="pointCoordinates")private Store store을 ribute과 반대편에 나는 @JoinColumn(name="store_id")와 속성 private PointCoordinates pointCoordinates에 주석을해야하지만 난 여전히 같은 오류가 영어)

Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: java.sql.SQLException: Fehler beim Zuweisen einer Verbindung. Ursache: java.lang.IllegalStateException: Local transaction already has 1 non-XA Resource: cannot add more resources. Error Code: 0 Call: INSERT INTO POINTCOORDINATES (ID, LAT, LONG) VALUES (?, ?, ?) bind => [3 parameters bound] Query: InsertObjectQuery([email protected])

+0

환경에 문제가있는 것처럼 보입니다. 응용 프로그램 서버 또는 서블릿 컨테이너를 사용합니까? JPA 코드가이 예외를 담당한다고 생각되면 관계를 주석 처리하십시오. – Claude

+0

귀하의 헌신에 감사드립니다,하지만 문제를 해결하고 내 대답을 살펴보십시오. – user2047688

답변

1

나는 대답이있다! PointCoordinates에 "@NotNull"주석을 달았 기 때문에이 오류가 발생했습니다. 잘못되었으므로 "선택 사항"속성을 사용해야합니다.

다른 오류 때문에 "로컬 트랜잭션에 이미 1 개의 비 XA 리소스가 있습니다. 더 많은 리소스를 추가 할 수 없습니다."라는 메시지가 나타났습니다. 여러 개의 지속성 단위와 여러 가지 다른 트랜잭션이 있었기 때문에 발생했습니다.