package org.hibernate.examples.mapping.compositeId.manytoone;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.examples.model.AbstractValueObject;
import org.hibernate.examples.utils.HashTool;
import org.hibernate.examples.utils.ToStringHelper;
import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
/**
* org.hibernate.examples.mapping.compositeId.manytoone.OrderDetailIdentifier
*
* @author 배성혁 sunghyouk.bae@gmail.com
* @since 2013. 11. 29. 오후 5:06
*/
@Embeddable
@Getter
@Setter
public class OrderDetailIdentifier extends AbstractValueObject implements java.io.Serializable {
protected OrderDetailIdentifier() {}
public OrderDetailIdentifier(Order order, Product product) {
assert (order != null);
assert (product != null);
this.order = order;
this.product = product;
}
@ManyToOne
@JoinColumn(name = "orderId")
private Order order;
@ManyToOne
@JoinColumn(name = "productId")
private Product product;
@Override
public int hashCode() {
return HashTool.compute(order, product);
}
@Override
public ToStringHelper buildStringHelper() {
return super.buildStringHelper()
.add("orderId", order.getId())
.add("productId", product.getId());
}
private static final long serialVersionUID = -7914201856753998776L;
}