私たちは何年も働いているアプリケーションを持っており、同じOracleデータベースも使用しています。しかし、あるホストから別のホストにデータベースを移行しました。一意の制約違反 - デバッグ
DB:今ORACLE
我々は次の例外を取得している突然、
“org.springframework.dao.DataIntegrityViolationException: ORA-00001: unique constraint (YYY.XXX_LOG_PK) violated;
SQL [n/a]; constraint [YYY.XXX_LOG_PK]; nested exception is org.hibernate.exception.ConstraintViolationException: ORA-00001: unique constraint (YYY.XXX_LOG_PK) violated”
コード:DB内
@SequenceGenerator(name = "TT_SEQUENCE_GENERATOR", sequenceName = "YYY.XXX_LOG_SEQ")
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TT_SEQUENCE_GENERATOR")
@Column(name = "ID")
public Long getId() {
return this.id;
}
シーケンス:
CREATED 07-NOV-17
LAST_DDL_TIME 07-NOV-17
SEQUENCE_OWNER TT
SEQUENCE_NAME YYY.XXX_LOG_SEQ
MIN_VALUE 1
MAX_VALUE 999999999999999999999999999
INCREMENT_BY 1
CYCLE_FLAG N
ORDER_FLAG N
CACHE_SIZE 0
LAST_NUMBER 75305
問題: JPAコードでレコードを挿入しようとすると、上記の例外が発生しますが、sequence.nextvalを使用してレコードをDBに挿入しようとすると、例外が発生しません。
とにかく私は例外が何であるかを見つけるためにデバッグできますか?私もshow_sqlを試しました - これで解決策を見つけることができませんでした。コンソールの次のシーケンス番号が表示されません。
ソリューションを知っていれば、私に正しい方向を教えてください。
Oracleデータベースの未加工の挿入でエラーが発生しないということは、この問題をさらに狡猾にします。 Hibernateがシーンの背後で1つ以上のジャンクションテーブルを作成している可能性はありますか?これが実際にエラーが発生している場所ですか? –
私は休止状態を複数回呼び出す機会はないと思っています....しかし、正しい点は、show_sqlを置くことでチェックします。 – abc