У меня проблема с отношениями родительского дочернего типа.
В документах Hibernate сказано добавить отношение "многие к одному" в дочернем классе, чтобы получить значение внешнего ключа от родителя.Но чтобы заставить это отношение работать, я должен добавить свойство Invoice в дочерний класс, которое вводит циклическое включение parent в child и нарушает мой сериализатор.Может ли кто-нибудь указать, где я делаю ошибку?
Вот мой код:
Invoice.java
public class Invoice implements Serializable {
private Long id;
private Date invDate;
private String customer;
private Set<InvoiceItem> items;
... getters/setters ...
}
InvoiceItem.java
public class InvoiceItem implements Serializable {
private Long itemId;
private long productId;
private int quantity;
private double price;
private Invoice invoice; //???????
... getters/setters ...
}
Invoice.hbm.xml
<class name="Invoice" table="Invoices">
<id name="id" column="ID" type="long">
<generator class="native" />
</id>
<property name="invDate" type="timestamp" />
<property name="customer" type="string" />
<set name="items" inverse="true" cascade="all-delete-orphan">
<key column="invoiceId" />
<one-to-many class="InvoiceItem" />
</set>
</class>
InvoiceItem.hbm.xml
<class name="InvoiceItem" table="InvoiceItems">
<id name="itemId" type="long" column="id">
<generator class="native" />
</id>
<property name="productId" type="long" />
<property name="quantity" type="int" />
<property name="price" type="double" />
<many-to-one name="invoiceId" class="Invoice" not-null="true"/> <!--????????-->
</class>