【发布时间】:2017-11-12 11:04:14
【问题描述】:
我正在尝试使用 rest api 和 hibernate 来做我的第一个 JEE 应用程序。我不知道如何以正确的方式做到这一点。我的意思是我有实体用户
@Entity
@XmlRootElement
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String username;
private String password;
private String email;
private LocalDateTime lastDateOfLogin;
@OneToMany(fetch=FetchType.LAZY)
private List<Post> posts = new ArrayList<>();
@OneToMany(fetch=FetchType.LAZY)
private List<Comment> comments = new ArrayList<>();
@OneToMany(fetch=FetchType.LAZY)
private List<Like> likes = new ArrayList<>();
@OneToMany(fetch=FetchType.LAZY)
private List<User> followers = new ArrayList<>();
@OneToMany(fetch=FetchType.LAZY)
private List<User> following = new ArrayList<>();
我有 UserResource 方法来获取一个用户
@GET
@Path("{id}")
public User getUser(@PathParam("id") long id)
{
return userService.getOne(id);
}
现在我的问题是,当我试图获得一个用户时,我得到了异常 org.hibernate.LazyInitializationException - 我当然知道为什么,但问题是如何以正确的方式做到这一点。在这个@GET 中,我不需要这个 OneToMany 集合,因为当我想要用户帖子时,我会调用 user/1/posts url,我会收到所有用户帖子。
如何开发此类应用程序?我是否应该从用户实体中删除关系并在需要时仅在用户的数据库帖子中搜索?或者也许有其他解决方案?
【问题讨论】:
标签: java hibernate rest jax-rs