私は、アドレスと共にユーザオブジェクトを保存しようとしていました。 User
クラス内には、Address
という関係が定義されています。 Address
の内部には、User
と定義されています。ネストされた関係エンティティでNULL値が渡されました - Spring Boot
オブジェクトを作成し、データベースに保存しようとすると、次のエラーを取得:
SqlExceptionHelper : ERROR: null value in column "user_id" violates not-null constraint
@Entity
class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String address;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private User user;
//getter setter
}
Userクラスを。
class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToMany(cascade = CascadeType.ALL)
private List<Address> address;
//Other fields, getters, & setters
}
UserServiceクラス。 Address
クラスに作成された後user_id
を渡す方法
class UserService {
public long createUser(User user) {
User u = new User();
Address address = new Address();
address.setAddress("Windsong Palace");
address.setZipCode("239749");
List<Address> adds = new ArrayList<>();
adds.add(address);
u.setAddress(adds);
//userRepository is the interface extends from JpaRepository<User, Long>
userRepository.save(u);
}
}
?
ユーザーを永続化する場合、関連するアドレスオブジェクトもリレーションで保持する必要があります。そして今のところあなたのエンティティのマッピングは良く見えます。あなたは何が欠けていますか?何が起こっていない? –
私はliquibaseが問題を引き起こすことに気づいていませんでした。私はliquibaseを使用していましたが、私はその問題を解決しました。 – mubeen
素晴らしい他の人が混乱しないように、この発見に関するあなた自身の質問に答えるならば、今は良くなります。 –