Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么OneToOne关系不';t工作正常吗?_Java_Spring_Hibernate_Jpa_Persistence - Fatal编程技术网

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对象进行分配?没问题;)。。。那么你能接受这个答案吗?它可能对其他问题有用;)。。。那么你能接受这个答案吗?它可能对其他问题有用;)。。。那么你能接受这个答案吗?它可能对其他问题有用;)。。。那么你能接受这个答案吗?它可能对其他人有用