【问题标题】:NamedQueries WHERE EQUALS statement in JPA RESTJPA REST 中的 NamedQueries WHERE EQUALS 语句
【发布时间】:2015-11-25 11:20:17
【问题描述】:

我正在创建一个 REST 服务,一开始很简单,但现在我想在列中获取具有特定值的表行。

这是我现在拥有的 NamedQueries 的一个示例:

@NamedQuery(name = "ExampleTable.findAll", query = "SELECT e FROM ExampleTable e"),
@NamedQuery(name = "ExampleTable.findById", query = "SELECT e FROM ExampleTable e WHERE e.id = :id"),
@NamedQuery(name = "ExampleTable.findByAmlClientCategory", query = "SELECT e FROM ExampleTable e WHERE e.amlClientCategory = :amlClientCategory"),
@NamedQuery(name = "ExampleTable.findByClientId", query = "SELECT e FROM ExampleTable e WHERE e.clientId = :clientId")

现在,如果我想通过特定的 AmlClientCategory 值来查找,假设所有在 AmlClientCategory 列中包含“1”的行,我该怎么做?

我正在按照this 指南创建我的 REST 服务。

非常感谢任何帮助!

【问题讨论】:

  • 您在 JPA 中使用实体而不是 SQL 表。 e.amlClientCategory 是实体还是字符串?
  • @Andreil 我认为这是一个实体,我有一个高于他们的(a)实体
  • 我不这么认为。它应该始终是一个字符串。
  • "一个内部服务器错误" ...好的,你不认为人们可能需要看看这个错误/异常是什么吗?既然所有 JPQL 查询都引用该类的字段,那么也提供实体类怎么样?

标签: sql rest jpa jax-rs


【解决方案1】:

你可以这样执行(假设 AmlClientCategory 是一个字符串):

List<ExampleTable> results = em.createNamedQuery("ExampleTable.findByAmlClientCategory", ExampleTable.class)
    .setParameter("AmlClientCategory", "1")
    .getResultList();

【讨论】:

  • @Somethingcool123 正确,你可以把它放在 Facade 类中
【解决方案2】:

在您的 DAO 实现类中使用以下代码。

Query query= entityManager.createNamedQuery("ExampleTable.findByAmlClientCategory");
query.setParameter("AmlClientCategory", "1");
Collection result = query.getResultList();

您可以在此处为您的NamedQuery 设置多个参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多