値Iは、次のコードをしている:私はこれを実行すると、新しいUserFormGroups
は、IDを春JPAがnullでエンティティを作成するには
groupModel.getUserFormGroups().clear();
for(MemberDTO member : group.getMembers()){
User u = userRepository.findByEmail(member.getEmail());
System.out.println(member.getEmail() + " " + groupModel.getName() + " " + member.getRole());
if(u == null){
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
groupModel.getUserFormGroups().add(new UserFormGroup(u, groupModel, UserFormGroupRole.ADMIN));
}
try{
groupRepository.save(groupModel);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} catch (DataIntegrityViolationException e){
System.out.println(e.getMessage());
System.out.println(e.getClass());
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).build();
}
持っており、他のすべてのフィールドがNULLです。 ManyToOne関係を完全に更新することに何か問題はありますか?私は、次のOneToMany関係したグループのエンティティで
:@OneToMany(targetEntity=UserFormGroup.class, cascade = { CascadeType.PERSIST, CascadeType.REMOVE }, fetch = FetchType.EAGER, mappedBy = "formGroup", orphanRemoval=true)
private Set<UserFormGroup> userFormGroups = new HashSet<>();
そしてUserFormGroup関係は次のようになります。
@Entity
@Table(uniqueConstraints={
@UniqueConstraint(columnNames = {"user", "form_group"})
})
public class UserFormGroup implements Serializable{
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn(name = "user",referencedColumnName = "id")
private User user;
@ManyToOne
@JoinColumn(name = "form_group", referencedColumnName = "id")
private FormGroup formGroup;
@Column(name = "role")
private UserFormGroupRole role;
public UserFormGroup() {
}
public UserFormGroup(User user, FormGroup group, UserFormGroupRole role) {
this.user = user;
this.formGroup = group;
this.role = role;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public FormGroup getFormGroup() {
return formGroup;
}
public void setFormGroup(FormGroup formGroup) {
this.formGroup = formGroup;
}
public UserFormGroupRole getRole() {
return role;
}
public void setRole(UserFormGroupRole role) {
this.role = role;
}
}
はgroupRepositoryです。JpaRepository?そして、明らかに、UserFormGroupエンティティは作成されますが、GroupModelへのIDと外部キーだけで作成されますか? –
もっと春のデータリポジトリに似ていますが、CrudRepositoryを拡張しています。それらは作成されますが、idのみが設定され、roleはnull、form_groupはnull、userはnullです。 – Servietsky