私はJPA Springデータリポジトリのsaveメソッドを使うたびに、新しいオブジェクトを返し、保存されたオブジェクトのAutogenerated PKは更新されません。Springのデータ保存は永続コンテキストでPKを更新しませんか?
返されたsaveメソッドでローカルオブジェクトPKを手動で更新する必要がありますか?
コード:
private void saveProject(){
Project savedProject = projectRepository.save(projectModel.getProject());
}
savedProjectがprojectModel.getProject
@Entity
@Table(name = "project", schema = "public")
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Integer id;
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
List<User> users;
[...]
}
と同じではありません:だから
@Entity
@Table(name = "user", schema = "public")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Integer id;
String name;
}
、ユーザーPKがでgerenatedされますMySQL、そしてすべてアプリケーションのユーザーがまだPKレスであるため、新しいユーザーが作成されたプロジェクトを保存します。
コードを入力してください。私はそれがこれを行うのを見ていない。 – chrylis
DBが自動的にPKを生成すると、次回に更新して新しいオブジェクトを再度作成できないように、ローカルオブジェクトをsavedProjectでリロードする必要があります。 – multiplayer1080
これはまだ問題を再現するのに十分な情報ではありません。リポジトリの 'save'メソッドは、JPAを使用しているときに新しいオブジェクトを返します。これは' @ Id'が読み込まれる( 'Project'を表示していない)必要があります。しかし、これは外資系の関係が進んでいるように見え、それは事態を複雑にする可能性があります。あなたのクラスを見せてください。 – chrylis