【发布时间】:2016-09-18 15:54:15
【问题描述】:
我已经开始使用 Spring Boot 进行测试,以创建一个具有 简单的 crud 函数。我有两个实体类
公司.java
@Entity
@Table(name="Company_new")
public class Company {
@Id
@NotNull
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
public void setId(int id) {
this.id = id;
}
@NotNull
@Column(name="name")
private String name;
@OneToMany(mappedBy="company",cascade=CascadeType.ALL)
private Set<User> users;
public Company(String name){
this.name = name;
}
public Company(){
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public int getId(){
return id;
}
}
和 User.java
@Entity
@Table(name="user_new")
public class User {
@Id
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private int idUser;
@NotNull
@Column
private String name;
@NotNull
@Column
private String userName;
@NotNull
@Column
private String authLevel;
@Column
private String password;
@ManyToOne
@JoinColumn(name="idCompany")
private Company company;
// Public methods
public Company getCompany(){
return company;
}
public void setCompany(Company company){
this.company = company;
}
public void setName(String name){
this.name =name;
}
public void setUserName(String userName){
this.userName = userName;
}
public String getName(){
return this.name;
}
public String getUsername(){
return this.userName;
}
public String getPassword(){
return this.password;
}
public String getAuthLevel() {
return authLevel;
}
public void setAuthLevel(String authLevel) {
this.authLevel = authLevel;
}
public String getUserName() {
return userName;
}
public void setId(int idUser) {
this.idUser = idUser;
}
public void setPassword(String password) {
this.password = password;
}
public int getId(){
return this.idUser;
}
}
我想与拥有许多用户的公司建立关系。 我尝试过像这样保存用户记录
@Autowired
CompanyDao companyDao;
@RequestMapping(value = "/user/create", method = RequestMethod.POST)
public @ResponseBody ResponseEntity createUser(@RequestBody User user) {
try {
Company c = companyDao.findOne(user.getCompany().getId());
user.setCompany(c);
userDao.save(user);
} catch (Exception e) {
return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST);
}
return new ResponseEntity<>(user, HttpStatus.OK);
}
我的数据以我想要的方式保存在数据库中 但是当我尝试访问公司记录时,它会像这样加载
显然它在一个循环中加载关系并最终给出堆栈溢出错误。如何解决?
【问题讨论】:
-
请同时添加错误堆栈跟踪
标签: java rest jpa spring-boot spring-data