JPQL特殊查询

时间:2013-10-12 13:31:30

标签: spring hibernate java-ee jpa jpql

我有两个实体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?

1 个答案:

答案 0 :(得分:0)

您可以使用entityManager.getReference()方法。在你的情况下:

entityManager.getReference(User.class, userId);

这不会执行任何数据库查询,但会为您提供仅填充了ID的User实例,您可以将其传递给commentObject.setUser()