У меня есть этот класс, я хочу сохранить этот класс, но только я получаю ошибки.
@Entity
@Table(name = "Participant")
public class Participant {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinColumn(name="user_id")
User user;
@OneToOne(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinColumn(name="meet_id")
Meet meet;
@Enumerated(EnumType.STRING)
@Column(name = "rol")
Rol rol;
}
Когда я пытаюсь сохранить, я получаю эту ошибку:
2019-05-20 22:03:29.637 ERROR 17416 --- [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exceptio
n [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: detached entity passed to persist: com.example.demo.model.User; nested exceptio
n is org.hibernate.PersistentObjectException: detached entity passed to persist: com.example.demo.model.User] with root cause
org.hibernate.PersistentObjectException: detached entity passed to persist: com.example.demo.model.User
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:124) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:765) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:758) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
какразрешить мою проблему?
в моем сервисе я делаю это
public class MeetServiceImpl {
@Autowired
MeetRepository meetRepository;
@Autowired
UserRepository userRepository;
@Autowired
ParticipantRepository participantRepository;
static Logger log = Logger.getLogger(MeetServiceImpl.class.getName());
public Meet createMeet(Long idUser, Meet meet) {
Meet currentMeet = meetRepository.findByName(meet.getName());
User user = userRepository.findById(idUser);
Participant participant = new Participant();
participant.setRol(Rol.OWNER);
Meet meet1 = new Meet();
meet1.setName("nuevo");
meet1.setState(State.start);
participant.setMeet(meet1);
participant.setUser(user);
participantRepository.save(participant);
return meetRepository.save(meet);
}
Я не понимаю, в чем проблема, что я делаю неправильно, это, кажется, не имеет логики
ДОПОЛНИТЕЛЬНО: это модель, ниже я покажу модель о классах, которые я использую
@Entity
@Table(name = "Meet")
public class Meet implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(unique = true, name = "name")
private String name;
@Enumerated(EnumType.STRING)
@Column(name = "state")
private State state;
и класс Meet
@Entity
@Table(name = "User")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "name")
private String name;
@Column(name = "password")
private String password;
@Column(unique = true, name = "email")
private String email;
@Enumerated(EnumType.STRING)
@Column(name = "life")
Life life;
, когда я комментирую идентификаторы
// @ GeneratedValue (стратегии = GenerationType.AUTO)
я получаю эту ошибку
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '0' for key 'PRIMARY'