我有两个实体bean:
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy="user", cascade = CascadeType.ALL)
private List<Comment> comments = new ArrayList<Comment>();
//SOME OTHER CLASS VARIABLES
//GETTERS AND SETTERS
}
我的评论类是这样的:
@Entity
public class Comment {
@Id
@GeneratedValue
private Long id;
private String title;
private String content;
@ManyToOne
private User user
//SOME OTHER CLASS VARIABLES
//GETTERS AND SETTERS
}
现在我知道我可以从会话中获取用户对象并将用户设置为我的评论,以便能够使用JPA中的连接功能:
commentObject.setUser(TheSessionGrabedUserObject/UserObjectWhichHasFetchedFromDbUsingUserId);
但只要我的用户对象有userId,我就不需要这样做了。 我正在寻找一种方法将这个foreignKey插入我的注释表而不从会话中获取用户对象,或者可能先查询数据库以获取它!
我将如何使用JPQL?
答案 0 :(得分:0)
您可以使用entityManager.getReference()
方法。在你的情况下:
entityManager.getReference(User.class, userId);
这不会执行任何数据库查询,但会为您提供仅填充了ID的User
实例,您可以将其传递给commentObject.setUser()
。