package org.hibernate.examples.mapping.compositeId.manytoone;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.examples.model.AbstractHibernateEntity;
import org.hibernate.examples.utils.HashTool;
import org.hibernate.examples.utils.ToStringHelper;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.math.BigDecimal;
/**
* org.hibernate.examples.mapping.compositeId.manytoone.OrderDetail
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 2013. 11. 29. 오후 5:07
*/
@Entity
@Table(name = "CompositeId_OrderDetail")
//@Cache(region = "composite", usage = CacheConcurrencyStrategy.READ_WRITE)
@DynamicInsert
@DynamicUpdate
@Getter
@Setter
public class OrderDetail extends AbstractHibernateEntity<OrderDetailIdentifier> {
protected OrderDetail() {}
public OrderDetail(Order order, Product product) {
this.id = new OrderDetailIdentifier(order, product);
}
public OrderDetail(OrderDetailIdentifier id) {
this.id = id;
}
@EmbeddedId
@Setter(AccessLevel.PROTECTED)
private OrderDetailIdentifier id;
private BigDecimal unitPrice;
private Integer quantity;
private Float discount;
@Override
public int hashCode() {
return HashTool.compute(unitPrice, quantity, discount);
}
@Override
public ToStringHelper buildStringHelper() {
return super.buildStringHelper()
.add("unitPrice", unitPrice)
.add("quantity", quantity)
.add("discount", discount);
}
private static final long serialVersionUID = 6958616166017033341L;
}