У меня есть таблица, фрагмент ниже.Ограничение отрицательного значения Hibernate
package test;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = "code")},
name = "coupons")
public class Coupon implements Serializable {
private static final long serialVersionUID = 5534534530153298987L;
@Id
@GeneratedValue
@Column(name = "id")
private long id;
@Column(name = "available_count")
private Integer availableCount = 1;
public Integer getAvailableCount() {
return availableCount;
}
public void setAvailableCount(Integer availableCount) {
this.availableCount = availableCount;
}
}
Как сделать ограничение, чтобы позволить availableCount
быть только неотрицательным?
:) Я делаю сейчас именно так, но для меня это кажется уродливым - я ищу что-то спящий родной, например как в SQL у нас есть CONSTRAINT – sergtk
У меня были проблемы с обеспечением ограничений в сеттерах в Hibernate. Если вы попытаетесь загрузить объект из базы данных, а 'availableCount' имеет отрицательное значение (в идеале, очевидно, что этого не произойдет ... но закон Мерфи будет вмешиваться, по крайней мере, в моем случае он это делает), то когда Hibernate загружает объект из БД он вызовет этот метод, будет выбрано исключение, и загрузка объекта не удастся. Это также не дает вам возможности исправить недопустимые данные, кроме перехода непосредственно в базу данных без использования Hibernate. –
Это кажется уродливым. На самом деле я не знаю, как это сделать. –