PurchaseItem.java
package ejava.jpa.example.validation;
import java.math.BigDecimal;
import java.text.NumberFormat;
import javax.persistence.*;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Entity
@Table(name="VALIDATION_PURCHASEITEM")
public class PurchaseItem {
@Id @GeneratedValue
private int id;
@Column(length=20, nullable=false)
@NotNull(message="item description is required")
@Size(max=20, message="description too large")
private String description;
@Column(precision=7, scale=2, nullable=false)
@NotNull(message="item amount is required")
private BigDecimal amount;
@Column(nullable=false)
@Min(value=1, message="item count is required")
private int count;
public int getId() { return id; }
public String getDescription() { return description; }
public PurchaseItem setDescription(String description) {
this.description = description;
return this;
}
public BigDecimal getAmount() { return amount; }
public PurchaseItem setAmount(BigDecimal amount) {
this.amount = amount;
return this;
}
public int getCount() { return count; }
public PurchaseItem setCount(int count) {
this.count = count;
return this;
}
public BigDecimal getTotal() {
return amount.multiply(new BigDecimal(count));
}
@Override
public String toString() {
NumberFormat nf = NumberFormat.getCurrencyInstance();
return String.format("%20s %dx %d", description, count, nf.format(getTotal()));
}
}