27

エンティティ ID が生成され、Spring データ JPA の代わりに DAO を使用すると正常に機能していました。

@Id
@Column(name = TABLE_COLUM_NAME_ID)
@GeneratedValue
private int id;

これで、Spring データ JPA の使用を開始しrepository.save(myboject)、 、またはを呼び出した後repository.saveAndFlush(myobject)、 を呼び出しますmyobject.getId()。しかし、ID は入力されません。

データベースを検索したところ、オブジェクトはデータベースにあり、ID は正しいです。私が電話した後にIDが設定されていない理由を知っている人はいsave()ますか? 使用時は問題ありませんentitymanager.save()

4

7 に答える 7

23

この投稿があなたの質問に答えると思います:

Spring Data JPAリポジトリでsave()の後に返されたインスタンスを使用するのはなぜですか?

このrepository.save()メソッドは実際には JPA のような新しいオブジェクトを返し、entityManager.merge()返されたオブジェクトには ID が設定されます。

于 2013-05-05T01:37:18.820 に答える
17

このようにしてみてください

myboject = repository.save(myboject);
repository.flush();

次に、への呼び出しの後getId()

于 2013-05-03T06:15:35.207 に答える
6

@GeneratedValuelikeの戦略を指定してみてください

@GeneratedValue(strategy = GenerationType.AUTO)
于 2013-05-05T01:33:11.400 に答える
6

このメソッドは、保存されたid

myobject = repository.saveAndFlush(myobject);

これで、id.

于 2014-02-24T10:50:31.470 に答える
0

Service メソッドに @Transactional アノテーションがなかったと思います。

于 2020-03-06T08:52:24.890 に答える