Java 为什么OneToOne关系不';t工作正常吗?
我有两个实体。用户:Java 为什么OneToOne关系不';t工作正常吗?,java,spring,hibernate,jpa,persistence,Java,Spring,Hibernate,Jpa,Persistence,我有两个实体。用户: @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 = CascadeTyp
@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":"myemail@gmail.com","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"myName","email":"myemail@gmail.com","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"myName","email":"myemail@gmail.com","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"myName","email":"myemail@gmail.com","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"myName","email":"myemail@gmail.com","authentication":{"id":1,"loginId":null,"user":{"id":1,"name":"
我做错了什么?帮助理解它应该如何工作。您的问题是:
user.setAuthentication(authentication);
...
authentication.setUser(user);
您在用户
和身份验证
之间有一个嵌套引用。您的问题是:
user.setAuthentication(authentication);
...
authentication.setUser(user);
您在用户
和身份验证
之间有一个嵌套引用。您的问题是:
user.setAuthentication(authentication);
...
authentication.setUser(user);
您在用户
和身份验证
之间有一个嵌套引用。您的问题是:
user.setAuthentication(authentication);
...
authentication.setUser(user);
您在
用户
和身份验证
之间有一个嵌套引用,它是返回嵌套对象的json。。。不是你的仓库
你在用杰克逊?
一边添加@JsonManagedReference,另一边添加@JsonBackReference这是返回嵌套对象的json。。。不是你的仓库 你在用杰克逊?
一边添加@JsonManagedReference,另一边添加@JsonBackReference这是返回嵌套对象的json。。。不是你的仓库 你在用杰克逊?
一边添加@JsonManagedReference,另一边添加@JsonBackReference这是返回嵌套对象的json。。。不是你的仓库 你在用杰克逊?
一边添加@JsonManagedReference,另一边添加@JsonBackReference感谢您的支持。如何在DB中保存用户并使用其自己的auth对象进行分配?感谢您的支持。如何在DB中保存用户并使用其自己的auth对象进行分配?感谢您的支持。如何在DB中保存用户并使用其自己的auth对象进行分配?感谢您的支持。如何在DB中保存用户并使用其自己的auth对象进行分配?没问题;)。。。那么你能接受这个答案吗?它可能对其他问题有用;)。。。那么你能接受这个答案吗?它可能对其他问题有用;)。。。那么你能接受这个答案吗?它可能对其他问题有用;)。。。那么你能接受这个答案吗?它可能对其他人有用