У меня много проблем с JPA и правыми аннотациями, и я пробовал много аннотаций и комбинаций, таких как @JoinColumn, mappedBy и т. Д., Но все равно получаю ошибки. Я использую EclipseLink (JPA 2.1).JPA: несколько отношений
У меня есть владелец класса магазин:
@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 PointCoordinates extends BaseEntity {
@NotNull
private float long;
@NotNull
private float lat;
@OneToOne(mappedBy="pointCoordinates")
private Store store;
...
}
И это одна из "@OneToMany" классов 'Магазин':
@Entity
public class BusinessHours extends BaseEntity {
private Boolean holiday;
@ManyToOne
private Store store;
...
}
Я думал, что он должен работать, потому что «Магазин» является владельцем «PointCoordinates», поэтому мне нужно аннотировать att ribute private Store store
с @OneToOne(mappedBy="pointCoordinates")
, а с другой стороны, я должен аннотировать атрибут private PointCoordinates pointCoordinates
с @JoinColumn(name="store_id")
Но я все еще получаю ту же ошибку:
Сообщение об ошибке на Glassfish 4.0
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]
Сообщение об ошибке на Glassfish 3.1.2.2 (Английский)
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])
Это выглядит, если у вас есть проблемы с окружающей средой. Используете ли вы сервер приложений или контейнер сервлетов? Если вы считаете, что ваш JPA-код отвечает за это исключение, попробуйте комментировать связь. – Claude
Спасибо, Майкл за вашу преданность делу, но я решил проблему, посмотрю на мой ответ. – user2047688