Hibernate忽略了通过JPA获取注释

时间:2014-05-10 16:14:30

标签: java hibernate jpa

我已经通过JPA使用Hibernate建立了一个项目 - 即我正在定义一个持久性单元并通过EntityManager(例如使用EntityManager' s find()方法)。

我有这样的注释实体A和B:

@Entity
class A
{

   @Id
   @Column
   private Integer id;

   @ManyToOne(fetch=FetchType.EAGER, optional = false)
   @Fetch(FetchMode.JOIN)
   @JoinColumn(name="b_id")
   private B bInstance;


   ...
}

@Entity
class B
{
   @Id
   @Column(name = "b_id")
   private Integer id;

   ...
   @OneToMany(fetch = FetchType.LAZY, mappedBy = "bInstance")
   private Set<A> As = new HashSet<A>();
}

现在当我调用findById(Integer id)来获取A元素时,我仍然得到两个选择查询,而不是一个内部连接到B表的单个查询。

我知道@Fetch是一个Hibernate注释,因此我失去了JPA的标准,但它不应该正常工作吗?

为了记录,这是我的Gneric Dao中的findById方法:

public E findById(Class<E> persistentClass, ID primaryKey) {
        validateFindById(persistentClass, primaryKey);

        disableFilter(persistentClass);

        return (E) getEntityManager().find(persistentClass, primaryKey);
    }

0 个答案:

没有答案