2016-10-04 68 views
0

我看过关于EJB的教程,并试图在我自己的项目中使用它。 如果我尝试拨打find()函数并按行ID搜索,我会得到我的结果。但是现在我有这个问题,我只是有外键搜索。 如果我使用find()并将外键作为参数传递,我会得到一个异常。 java.lang.IllegalArgumentException 现在我想知道是否甚至有可能使用find()没有主键的功能,或者我应该创建一个与我的SQL-Query里面的DAO?通过外键找到EJB EJB

回答

2

与其构建DAO,您的项目可能已经利用JPA与实体管理器(本身已经是DAO)的优势。

如果是这样的话,我想,还是在一个方便实用类建立一个特定的命名查询,通过把一个命名查询你的实体之上:

@Entity 
@NamedQuery(
    name="findMyEntityWithFK", 
    queryString="SELECT e FROM EntityTable e WHERE e.myForeignKey = :myForeignKey") 

,然后你可以简单地说:

Query queryByFK = em.createNamedQuery("findMyEntityWithFK"); 
queryByFK.setParameter("myForeignKey", "xyz"); 
Collection entities = queryByFK.getResultList();