Werte Ich habe den folgenden Code:Frühling JPA schafft Einheit mit 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();
}
Als ich dies ausführen, die neue UserFormGroups
haben eine ID und alle anderen Felder sind null. Ist etwas nicht in Ordnung, wenn Sie eine ManyToOne-Beziehung vollständig aktualisieren?
Auf der Konzernunternehmen ich folgende OneToMany Beziehung haben:
@OneToMany(targetEntity=UserFormGroup.class, cascade = { CascadeType.PERSIST, CascadeType.REMOVE }, fetch = FetchType.EAGER, mappedBy = "formGroup", orphanRemoval=true)
private Set<UserFormGroup> userFormGroups = new HashSet<>();
Und die UserFormGroup Beziehung sieht wie folgt aus:
@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;
}
}
ist GroupRepository ein JpaRepository? Und um es klar zu stellen, die UserFormGroup-Entitäten werden erstellt, aber nur mit der ID und dem Fremdschlüssel für das GroupModel? –
Ähnlich wie ein Feder Data Repository erweitert es CrudRepository. Sie werden erstellt, aber nur die ID wird festgelegt, die Rolle ist null, form_group ist null und der Benutzer ist null. – Servietsky