Persistence. xml:
<? XML version = "1.0" encoding = "UTF-8"?>
<Persistence xmlns = "http://java.sun.com/xml/ns/persistence"
Xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
Xsi: schemalocation = "http://java.sun.com/xml/ns/persistence
Http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd "version =" 1.0 ">
<Persistence-unit name = "onetoonepu" transaction-type = "JTA">
<JTA-data-source> JAVA:/mysqlds </JTA-data-source>
<Properties> <property name = "hibernate. hbm2ddl. Auto" value = "Create-drop"/> </Properties>
</Persistence-unit>
</Persistence>
The following is the Java code:
Order. Java:
package com.cecltd.domain;import java.io.Serializable;import java.util.HashSet;import java.util.Date;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.OrderBy;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;@SuppressWarnings("serial")@Entity@Table(name = "Orders")public class Order implements Serializable {private Integer orderid;private Float amount;private Set
orderItems = new HashSet
();private Date createdate;@Id@GeneratedValuepublic Integer getOrderid() {return orderid;}public void setOrderid(Integer orderid) {this.orderid = orderid;}public Float getAmount() {return amount;}public void setAmount(Float amount) {this.amount = amount;}@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, fetch = FetchType.LAZY)@OrderBy(value = "id ASC")public Set
getOrderItems() {return orderItems;}public void setOrderItems(Set
orderItems) {this.orderItems = orderItems;}@Temporal(value = TemporalType.TIMESTAMP)public Date getCreatedate() {return createdate;}public void setCreatedate(Date createdate) {this.createdate = createdate;}public void addOrderItem(OrderItem orderitem) {if (!this.orderItems.contains(orderitem)) {this.orderItems.add(orderitem);orderitem.setOrder(this);}}public void removeOrderItem(OrderItem orderitem) {orderitem.setOrder(null);this.orderItems.remove(orderitem);}}
Orderitem. Java:
package com.cecltd.domain;import java.io.Serializable;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;@SuppressWarnings("serial")@Entity@Table(name = "OrderItems")public class OrderItem implements Serializable { private Integer id; private String productname; private Float price; private Order order; public OrderItem() { } public OrderItem(String productname, Float price) { this.productname = productname; this.price = price; } @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getProductname() { return productname; } public void setProductname(String productname) { this.productname = productname; } public Float getPrice() { return price; } public void setPrice(Float price) { this.price = price; } @ManyToOne(cascade=CascadeType.REFRESH,optional=false) @JoinColumn(name = "order_id") public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; }}
Orderdao. Java:
package com.cecltd.ejb3;import java.util.List;import com.cecltd.domain.Order;public interface OrderDAO { public void insertOrder(); public Order getOrderByID(Integer orderid); public List getAllOrder();}
Orderdaobean. Java:
Package COM. cecltd. ejb3.impl; import Java. util. date; import Java. util. list; import javax. EJB. remote; import javax. EJB. stateless; import javax. persistence. entitymanager; import javax. persistence. persistencecontext; import javax. persistence. query; import COM. cecltd. domain. order; import COM. cecltd. domain. orderitem; import COM. cecltd. ejb3.orderdao; @ stateless @ remote ({orderdao. class}) public class orderdaobean implements orderdao {@ persistencecontext protected entitymanager em; Public void insertorder () {order = New Order (); Order. setcreatedate (new date (); Order. addorderitem (New orderitem ("laptop", new float (13200.5); Order. addorderitem (New orderitem ("U disk", new float (620); Order. setamount (new float (13200.5 + 620); em. persist (order);} public order getorderbyid (integer orderid) {order = em. find (Order. class, orderid); Order. getorderitems (). size (); // because the loading is delayed, return order is obtained by executing size ().} public list getallorder () {query = em. createquery ("select distinct O from order o inner join fetch O. orderitems order by O. orderid "); List result = query. getresultlist (); return result ;}}
Test code:
Onetomanyclient. Java:
Package test;
Import java. util. iterator;
Import java. util. List;
Import java. util. properties;
Import javax. Naming. initialcontext;
Import javax. Naming. namingexception;
Import com. cecltd. domain. Order;
Import com. cecltd. domain. orderitem;
Import com. cecltd. ejb3.orderdao;
Public class onetomanyclient {
Public static void main (string [] ARGs) throws namingexception {
Properties props = new properties ();
Props. setproperty ("Java. Naming. Factory. Initial", "org. jnp. Interfaces. namingcontextfactory ");
Props. setproperty ("Java. Naming. provider. url", "127.0.0.1: 1099 ");
Props. setproperty ("Java. Naming. Factory. url. pkgs", "org. JBoss. Naming: org. jnp. interfaces ");
Initialcontext CTX = new initialcontext (props );
Try {
Orderdao = (orderdao) CTX. Lookup ("orderdaobean/remote ");
Orderdao. insertorder ();
List list = orderdao. getallorder ();
If (list! = NULL ){
For (int K = 0; k <list. Size (); k ++ ){
Order OD = (Order) list. Get (k );
If (od! = NULL ){
System. out. println ("================= Order No.:" + OD. getorderid () + "======================== ");
Iterator = OD. getorderitems (). iterator ();
While (iterator. hasnext ()){
Orderitem suborder = (orderitem) iterator. Next ();
System. Out. println ("ordering product:" + suborder. getproductname ());
}
}
}
} Else {
System. Out. println ("the order list cannot be obtained ");
}
} Catch (exception e ){
System. Out. println (E. getmessage ());
}
}
}