自動インクリメントする id 列を持つテーブルと、注釈が付けられたゲッターを持つ Java オブジェクトがあります@GeneratedValue(strategy = GenerationType.AUTO)
。これは保存時にうまく機能しますが、単体テストでは決定論的であるように ID を指定したいと考えています。MySQL (使用している DB) では、insert ステートメントで値を指定でき、すべて正常に動作します。ただし、Java オブジェクトに id フィールドを設定して永続化しようとすると、休止状態が例外をスローします。通常生成される値の値を Hibernate で指定できるようにするにはどうすればよいですか?
フィールドの例:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return this.id;
}
MySQL で動作:
INSERT INTO myTable (id, str)
VALUES (10,'this works!')
動作しません:
MyObject myObject = new MyObject();
myObject.setId(10L); //remove this line and hibernate saves ok
myObject.setStr("this does not work.");
daoForMyObject.persist(myObject); //throws org.springframework.dao.DataIntegrityViolationException
優れたテスト駆動型開発者になるのを手伝ってくれて、前もって感謝します!