У меня есть 2 человека. Пользователь:Почему отношение OneToOne не работает должным образом?
@Table(name = "USERS")
@Entity
public class User {
@Column(name = "user_id")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
private String email;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "user")
private Authentication authentication;
}
и аутентификация:
@Table(name = "AUTHENTICATIONS")
@Entity
public class Authentication {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "login_id")
private String loginId;//openId login
@JsonIgnore
private String password;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
private User user;
}
И у меня есть служба, которая обеспечивает регистрацию новых пользователей:
@Override
@Transactional
public User createUser(UserRegistrationForm form) {
Authentication authentication = new Authentication();
authentication.setPassword(form.getPassword());
User user = new User();
user.setAuthentication(authentication);
user.setEmail(form.getEmail());
user.setName(form.getLogin());
authentication.setUser(user);
return userRepository.save(user);
}
И моя проблема заключается метод userRepository.save() возвращает бесконечно вложенным объектов:
{"id":1,"name":"myName","email":"[email protected]","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"myName","email":"[email protected]","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"myName","email":"[email protected]","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"myName","email":"[email protected]","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"myName","email":"[email protected]","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"
Что я делаю неправильно? Помогите понять, как это должно работать.
Спасибо, он работает. – Haygo
никаких проблем;) ... можете ли вы, пожалуйста, принять ответ? это может быть полезно для других – Pras