У меня есть 2 объекта: группа и пользователь.Оба находятся в отношении OneToOne, Пользователь - родитель, а Группа - дочерний.
Проблема в том, что у меня возникает ошибка при сохранении объекта группы в базу данных: org.hibernate.id.IdentifierGenerationException: попытка присвоить идентификаториз нулевого свойства «один к одному» [com.robert.app.ws.io.entity.GroupEntity.user]
Групповой объект:
public class GroupEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String name;
@OneToMany(mappedBy = "group")
private List<ChildEntity> children;
//FK z tablicy users
@OneToOne
@MapsId
UserEntity user;
//getters and setters
Пользовательский объект:
public class UserEntity implements Serializable {
private static final long serialVersionUID = 8748598732973872010L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(nullable = false)
private String userId;
@Column(nullable = false, length = 50)
private String firstName;
@Column(nullable = false, length = 50)
private String lastName;
@Column(nullable = false, length = 15)
@Enumerated(EnumType.STRING)
private Gender gender;
@Column(nullable = false, length = 20)
private String pesel;
@Column(nullable = false, length = 20)
@Enumerated(EnumType.STRING)
private AccountType accountType;
@Column(nullable = false, length = 60)
private String address;
@Column(nullable = false, unique = true)
private String email;
private String encryptedPassword;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user",
orphanRemoval = true)
private List<ChildEntity> children = new ArrayList<>();
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL)
private GroupEntity group;
Класс GroupServiceImlp:
@Override
public GroupDto createGroup(GroupDto group) {
GroupEntity groupEntity = new GroupEntity();
BeanUtils.copyProperties(group, groupEntity);
GroupEntity storedGroup = groupRepository.save(groupEntity);
GroupDto returnValue = new GroupDto();
BeanUtils.copyProperties(storedGroup, returnValue);
return returnValue;
}
Я хочу создать группу и назначить пользователя этой группе позже (хотел бы сделать это в приложении для Android).У меня есть кнопка, где я просто добавляю новую группу в базу данных.С другой стороны, я хотел бы сопоставить определенную группу, которая уже создана, с пользователем.
Я уверен, что не понимаю что-то, связанное с отношениями в JPA, но я новичок в Spring, поэтому яищу помощи.