Donnerstag, 9. September 2010

JPA Annotations

http://www.jpox.org/docs/1_2/jpa/annotations.html


Must haves:
@Entity
class MyClass
@Id 
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;  //ID property is mandatory!! 
@Version private int version 

1:1 unidirectional  invoice -> order
class Invoice
 @OneToOne(optional=false)//optional false = inner join, default TRUE = outer join
 @JoinColumn(name = "ORDER_ID") 
 private Order order;       

1:1 bidirectional invoice <-> order (as unidirectional plus:)
class Order
@OneToOne(optional=false,   cascade=CascadeType.ALL,  
   mappedBy="order",
   targetEntity=Invoice.class)
private Invoice invoice;       

N:1 biderectional
Class Order
@ManyToOne(optional=false)
@JoinColumn(name="CUST_ID",     referencedColumnName="CUST_ID")
private Customer customer;
class Customer @OneToMany(mappedBy="customer", targetEntity=Order.class, fetch=FetchType.EAGER) private Collection orders; N:N uniderectional class order
@ManyToMany(fetch=FetchType.EAGER)
 @JoinTable(name="ORDER_DETAIL",
            joinColumns= @JoinColumn( name="ORDER_ID", 
                                      referencedColumnName="ORDER_ID"),
                                      inverseJoinColumns= @JoinColumn(
                                      name="PROD_ID", 
                                      referencedColumnName="PROD_ID")
           )

Keine Kommentare:

Kommentar veröffentlichen