Java 通过外键查找 EJB

Java EJB find by Foreign key

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

您的项目可能已经在使用带有实体管理器的 JPA,而不是构建 DAO,它本身已经是一个 DAO。

如果是这种情况,我会构建一个特定的命名查询,方法是将一个命名查询放在您的实体之上,或者放在一个方便的实用程序中 class:

@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();