Есть таблица ORDERS, из которой были созданы представления ORDER_VIEW_A и ORDER_VIEW_B.
Я создал классы сущностей OrderViewA и OrderViewB, в которых в каждом из них отображается сущность с именем «TransactionRecord».
Это отношения @OneToOne.
Существует столбец ORDER_ID в таблице TRANSACTION_RECORD и поле orderId в сущности TransactionRecord.
Поле orderId одинаково для OrderViewA.id и для OrderViewB.id, представления причин выбираются из одной таблицы.
У меня вопрос, как отобразить в Hibernate два представления в OneToOne-отношениях с другим объектом по тому же полю.
Мой код выглядит так, и он никак не работает, Hibernate всегда заканчивается:
org.hibernate.AnnotationException: указанное свойство не является
(Один | Много) ToOne: com.example.app.model.TransactionRecord.orderId в
mappedBy из com.example.app.model.views.OrderViewA.orderViewA
@Entity
@Immutable
@Table(name = "ORDER_VIEW_A")
public class OrderViewA {
@Id
@Column(name = "id")
private Long id;
...
@OneToOne(mappedBy = "orderId", fetch = FetchType.LAZY)
private IntegrationRecord orderARecord;
...
}
@Entity
@Immutable
@Table(name = "ORDER_VIEW_B")
public class OrderViewB {
@Id
@Column(name = "id")
private Long id;
...
@OneToOne(mappedBy = "orderId", fetch = FetchType.LAZY)
private IntegrationRecord orderBRecord;
...
}
@Entity
@Table(name = "TRANSACTION_RECORD")
public class TransactionRecord {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "order_id")
private Long orderId;
...
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id")
private OrderViewA orderViewA;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id")
private OrderViewB orderViewB;
...
}