我有一张包含股票的表格。它是遗留数据库,库存保留在列中。数据库对列有一个约束,表明它们不能是负值。但是我只在提交事务后才得到约束违规。
15:21:31,154 WARN JDBCExceptionReporter:77 - SQL Error: 2290, SQLState: 23000
15:21:31,154 ERROR JDBCExceptionReporter:78 - ORA-02290: check constraint (ERPDSS13.STKMAST_CON_QTY13) violated
ORA-06512: at "ERPDSS13.INLTRAN_UPD_STKMAST", line 25
ORA-04088: error during execution of trigger 'ERPDSS13.INLTRAN_UPD_STKMAST'
是否有注释方法可以指定列不能为负数。下面是列映射?
@Column(name = "STKSOHQTY01", precision = 12)
public BigDecimal getStksohqty01() {
return this.stksohqty01;
}
答案 0 :(得分:2)
@Check(constraints = "STKSOHQTY01 >= 0")
public class Coupon implements Serializable {
}
应该有效
答案 1 :(得分:1)
从版本3.5开始,Hibernate支持标准bean validation (JSR303)。您可以而且应该使用这些来验证您的实体,因为API快速,集成良好,更重要的是,标准化:
@Min(value = 0)
@Column(name = "STKSOHQTY01", precision = 12)
public BigDecimal getStksohqty01() {
return this.stksohqty01;
}
答案 2 :(得分:0)
尝试使用@Check
@Check(constraints = "STKSOHQTY01t >= 0")
public class YourEntity implements Serializable {...}