У меня есть класс пользователя, как показано ниже
@Entity
@Table
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long userId;
@Column(nullable = false)
String firstName;
@Column(nullable = false)
String lastName;
@Column(nullable = false, unique = true)
String email;
@Column
String mobile;
@Column(nullable = true)
String password;
@Column(nullable = false)
String role;
@Column(nullable = false)
boolean isAccountLocked;
@Column(nullable = false)
boolean isAccountDisabled;
@Column(nullable = false)
boolean isPasswordExipred;
@Column(nullable = false)
boolean isAccountExipred;
// Relations
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JsonIgnore
UserPersonalDetails personalDetails;
// Relations
@OneToOne(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)@JsonIgnore
StudentAcadmicsDetails studentAcadmicsDetails;
// getter setters
}
Мой класс StudentAcadmicDetails, как показано ниже
@Entity
@Table
public class StudentAcadmicsDetails {
@Id
Long userId;
@PrimaryKeyJoinColumn
@OneToOne(cascade = CascadeType.ALL)
@OnDelete(action = OnDeleteAction.CASCADE)
@MapsId
User user;
String department;
Integer year;
String division;
String branch;
Integer semister;
// getter setters
}
Ниже приведен мой код уровня обслуживания
@Service
public class StudentAcadmicsService {
@Autowired
StudentAcadmicsDAO studentAcadmicsDAO;
@Autowired
UserService userService;
public StudentAcadmicsDetails saveStudentAcadmicsDetails(StudentAcadmicsDetails details) {
User user = userService.findById(details.getUser().getUserId());
details.setUser(user);
return studentAcadmicsDAO.save(details);
}
Я получаю ниже ошибка при сохранении StudentAcadmicsDetails с использованием интерфейса JpaRepository.
org.hibernate.PersistentObjectException: отдельная сущность передана в постоянство: com.asset.app.user.User
Также если есть какой-то способ, которым я могу сохранить StudentAcadmicsDetails напрямую, не сохраняя прикрепление объекта пользователя. Отображение базы данных между пользователем и StudentAcadmicsDetails должно быть разрешено полем userId