Java EJB通过外键查找

时间:2016-10-04 16:45:18

标签: java ejb

我看过一个关于EJB的教程,并尝试在我自己的Project中使用它。 如果我尝试调用find()函数并按行ID搜索,则会得到我的结果。但现在我有问题,我只有外键搜索。 如果我使用find()并将外键作为参数传递,则会出现异常。 java.lang.IllegalArgumentException 现在我想知道是否可以在没有主键的情况下使用find()函数,还是应该在里面创建一个带有SQL-Query的DAO?

1 个答案:

答案 0 :(得分:2)

您的项目可能已经利用了JPA和实体管理器,而不是构建DAO,而实体管理器本身就是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();