0

在庫を含むテーブルがあります。これはレガシー データベースであり、在庫は列に保持されます。データベースには、列が負の値であってはならないという制約があります。しかし、トランザクションがコミットされた後にのみ制約違反が発生します。

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;
} 
4

3 に答える 3

2
@Check(constraints = "STKSOHQTY01 >= 0")  
public class Coupon implements  Serializable {

}

動作するはずです

于 2012-06-25T10:34:06.937 に答える
1

バージョン 3.5 以降、Hibernate は標準の Bean 検証 (JSR303)をサポートしています。API は高速で、十分に統合されており、さらに重要なことに、標準化されているため、これらを使用してエンティティを検証できます。

@Min(value = 0)
@Column(name = "STKSOHQTY01", precision = 12)
public BigDecimal getStksohqty01() {
    return this.stksohqty01;
}
于 2012-06-25T10:46:13.800 に答える
0

試してみてください@Check

@Check(constraints = "STKSOHQTY01t >= 0")

public class YourEntity implements  Serializable {...}
于 2012-06-25T10:33:43.777 に答える