Hibernate композитная аннотация - PullRequest
2 голосов
/ 26 декабря 2011

Я новичок в Hibernate и пытаюсь отобразить дополнительные столбцы в соединительной таблице в родительский класс. Я мог бы найти пример на http://docs.jboss.org/hibernate/core/3.5/reference/en/html/components.html

<class name="eg.Order" .... >
....
<set name="purchasedItems" table="purchase_items" lazy="true">
<key column="order_id">
<composite-element class="eg.Purchase">
<property name="purchaseDate"/>
<property name="price"/>
<property name="quantity"/>
<many-to-one name="item" class="eg.Item"/> <!-- class attribute is optional -->
</composite-element>
</set>
</class>

Я хочу приведенный выше пример xml в чистой аннотации. Любая помощь будет принята с благодарностью.

Спасибо

Ответы [ 2 ]

1 голос
/ 21 августа 2014

Класс покупки:

package eg;

@javax.persistence.Embeddable
public class Purchase{

    private Date purchaseDate;
    private Double price;
    private Integer quantity;

    @javax.persistence.ManyToOne
    private Item item;

    // getters and setters
}

Класс заказа:

package eg;

@javax.persistence.Entity
public class Order {

    @javax.persistence.ElementCollection(fetch = javax.persistence.FetchType.LAZY)
    @javax.persistence.CollectionTable( 
         name = "purchase_items", 
         joinColumns = @JoinColumn( name = "order_id" ) 
    )
    java.util.Set<eg.Purchase> purchasedItems;

    // getter and setter for purchasedItems
}
0 голосов
/ 27 декабря 2011

См. http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#collections-ofvalues. аннотации являются частью ядра Hibernate начиная с версии 3.6, IIRC, и поэтому документация для аннотаций включена в основную документацию 3.6. Для предыдущих версий это было задокументировано отдельно (см. http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e1821)

...