mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
initial add of EbeanORM server based on v2.8.1
This commit is contained in:
@@ -0,0 +1,270 @@
|
||||
package com.avaje.tests.model.basic;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Date;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OrderBy;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.Transient;
|
||||
import javax.persistence.Version;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
import com.avaje.ebean.annotation.CreatedTimestamp;
|
||||
import com.avaje.ebean.annotation.Formula;
|
||||
import com.avaje.ebean.annotation.Where;
|
||||
import com.avaje.ebean.validation.NotNull;
|
||||
|
||||
/**
|
||||
* Order entity bean.
|
||||
*/
|
||||
@Entity
|
||||
@Table(name="o_order")
|
||||
public class Order implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@XmlType(name="status")
|
||||
public enum Status {
|
||||
NEW,
|
||||
APPROVED,
|
||||
SHIPPED,
|
||||
COMPLETE
|
||||
}
|
||||
|
||||
public Order(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Id
|
||||
Integer id;
|
||||
|
||||
/**
|
||||
* Derived total amount from the order details. Needs to be explicitly included in query as Transient.
|
||||
* Removing the Transient would mean by default it would be included in a order query.
|
||||
* <p>
|
||||
* NOTE: The join clause for totalAmount and totalItems is the same. If your query includes both
|
||||
* totalAmount and totalItems only the one join is added to the query.
|
||||
* </p>
|
||||
*/
|
||||
@Transient
|
||||
@Formula(
|
||||
select="z_b${ta}.total_amount",
|
||||
join="join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_b${ta} on z_b${ta}.order_id = ${ta}.id")
|
||||
Double totalAmount;
|
||||
|
||||
/**
|
||||
* Derived total item count from the order details. Needs to be explicitly included in query as Transient.
|
||||
*/
|
||||
@Transient
|
||||
@Formula(
|
||||
select="z_b${ta}.total_items",
|
||||
join="join (select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount from o_order_detail group by order_id) z_b${ta} on z_b${ta}.order_id = ${ta}.id")
|
||||
Integer totalItems;
|
||||
|
||||
@Enumerated(value=EnumType.ORDINAL)
|
||||
Status status = Status.NEW;
|
||||
|
||||
Date orderDate = new Date(System.currentTimeMillis());
|
||||
|
||||
Date shipDate;
|
||||
|
||||
@NotNull
|
||||
@ManyToOne
|
||||
@JoinColumn(name="kcustomer_id")
|
||||
Customer customer;
|
||||
|
||||
//@Basic(fetch=FetchType.LAZY)
|
||||
@Column(name="name",table="o_customer")
|
||||
String customerName;
|
||||
|
||||
@CreatedTimestamp
|
||||
Timestamp cretime;
|
||||
|
||||
@Version
|
||||
Timestamp updtime;
|
||||
|
||||
@Where(clause="${ta}.id > 0")
|
||||
@OneToMany(cascade=CascadeType.ALL, mappedBy="order")
|
||||
@OrderBy("id asc, orderQty asc, cretime desc")
|
||||
List<OrderDetail> details;
|
||||
|
||||
@OneToMany(cascade=CascadeType.ALL, mappedBy="order")
|
||||
List<OrderShipment> shipments;
|
||||
|
||||
public String toString() {
|
||||
return id+" totalAmount:"+totalAmount+" totalItems:"+totalItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return id.
|
||||
*/
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set id.
|
||||
*/
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getCustomerName() {
|
||||
return customerName;
|
||||
}
|
||||
|
||||
public void setCustomerName(String customerName) {
|
||||
this.customerName = customerName;
|
||||
}
|
||||
|
||||
public Double getTotalAmount() {
|
||||
return totalAmount;
|
||||
}
|
||||
|
||||
public void setTotalAmount(Double totalAmount) {
|
||||
this.totalAmount = totalAmount;
|
||||
}
|
||||
|
||||
public Integer getTotalItems() {
|
||||
return totalItems;
|
||||
}
|
||||
|
||||
public void setTotalItems(Integer totalItems) {
|
||||
this.totalItems = totalItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return order date.
|
||||
*/
|
||||
public Date getOrderDate() {
|
||||
return orderDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set order date.
|
||||
*/
|
||||
public void setOrderDate(Date orderDate) {
|
||||
this.orderDate = orderDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return ship date.
|
||||
*/
|
||||
public Date getShipDate() {
|
||||
return shipDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ship date.
|
||||
*/
|
||||
public void setShipDate(Date shipDate) {
|
||||
this.shipDate = shipDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return cretime.
|
||||
*/
|
||||
public Timestamp getCretime() {
|
||||
return cretime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set cretime.
|
||||
*/
|
||||
public void setCretime(Timestamp cretime) {
|
||||
this.cretime = cretime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return updtime.
|
||||
*/
|
||||
public Timestamp getUpdtime() {
|
||||
return updtime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set updtime.
|
||||
*/
|
||||
public void setUpdtime(Timestamp updtime) {
|
||||
this.updtime = updtime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return status.
|
||||
*/
|
||||
public Status getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set status.
|
||||
*/
|
||||
public void setStatus(Status status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return customer.
|
||||
*/
|
||||
public Customer getCustomer() {
|
||||
return customer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set customer.
|
||||
*/
|
||||
public void setCustomer(Customer customer) {
|
||||
this.customer = customer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return details.
|
||||
*/
|
||||
public List<OrderDetail> getDetails() {
|
||||
return details;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set details.
|
||||
*/
|
||||
public void setDetails(List<OrderDetail> details) {
|
||||
this.details = details;
|
||||
}
|
||||
|
||||
public void addDetail(OrderDetail detail){
|
||||
|
||||
if (details == null){
|
||||
details = new ArrayList<OrderDetail>();
|
||||
}
|
||||
details.add(detail);
|
||||
}
|
||||
|
||||
public List<OrderShipment> getShipments() {
|
||||
return shipments;
|
||||
}
|
||||
|
||||
public void setShipments(List<OrderShipment> shipments) {
|
||||
this.shipments = shipments;
|
||||
}
|
||||
|
||||
public void addShipment(OrderShipment shipment){
|
||||
|
||||
if (shipments == null){
|
||||
shipments = new ArrayList<OrderShipment>();
|
||||
}
|
||||
shipments.add(shipment);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user