当前位置: 首页 > 知识库问答 >
问题:

从EntityManager返回部分实体

廖琪
2023-03-14

JPA-QL声明我应该能够使用从status s中选择s.message来查询实体,这确实适用于JPA-QL控制台。

然而,我真正想做的是在返回列表中只返回实体的特定属性,就像这样:

@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<Status> getIt() {
    EntityManager em = PersistenceManager.INSTANCE.getEntityManager();
    List<Status> results = em.createQuery("select s.message from Status s").getResultList();

    return results;
}

不过,这会出错,根本没有真正的错误消息。我可以看到Hibernate运行了这个查询:

Hibernate: 
    select
        status0_.ID as col_0_0_ 
    from
        LIBRARY.TABLE status0_

从 Status s 中选择 s 的传统方法工作正常:

@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<Status> getIt() {
    EntityManager em = PersistenceManager.INSTANCE.getEntityManager();
    List<Status> results = em.createQuery("select s from Status s").getResultList();

    return results;
}

共有2个答案

龙兴学
2023-03-14

<代码>列表

您正在查询状态消息,但将其键入到 List

< code > List results = em . create query(" select s . message from Status s ")。get result list();

因为你期望从 getResultList() 返回的是非类型化列表。

邢博学
2023-03-14

如果您只想检索实体的一个原语,getResultList()将返回一个List

但是,我们通常不仅仅使用一个元素。通常,我们为此使用构造函数表达式。它们非常强大,因为我们可以将带有连接的查询映射到一个数据对象,或者像您的情况一样,只选择我们真正想要的字段。

假设一个传输对象如下所示:

public class TO {
    Long id;
    String message;
    public TO(Long id, String message) {
        this.id = id;
        this.message = message;
}

然后你可以创建一个查询(我更喜欢TypedQueries):

TypedQuery<TO> qry = em.createQuery("SELECT NEW org.mypackage.TO(s.id, s.message) FROM Status s", TO.class);
List<TO> myList = qry.getResultList();

希望这有所帮助!

 类似资料:
  • 我有一个JavaWeb服务,其中包含一个泽西RESTendpoint,它将Restaurant POJO列表作为JSON对象返回(请参阅下面的Restaurant类) 并返回与Restaurant类绑定的所有数据。但是,我想添加另一个更精简的endpoint,如下所示 对于所有餐厅,它仅返回餐厅POJO的id和名称。在Jersey开箱即用中是否有一种很好的方法来实现这一点(例如,为特定endpoi

  • 问题内容: 我正在将KnockoutJS引入现有的应用程序中。我的计划是修改/利用我们已经创建的现有局部视图,并将其与具有Knockout声明性属性的JS视图模型绑定。当我对某个动作进行AJAX调用时,理想情况下,我希望该动作同时返回部分视图的HTML和JSON对象。然后,我可以用HTML填充div,将JSON转换为Knockout对象并将其绑定到HTML。但是我不知道如何从动作中返回两者。 我需

  • 问题内容: 我在Java中具有JSON序列化对象的字符串表示形式,例如。我如何解析并将其返回到JavaScript上下文,就像在JS中一样?谢谢。 问题答案: Rhino的最新版本只有四个arg,第四个不能为null。为了解决这个问题,您必须创建一个实现org.mozilla.javascript.Callable的简单类: 然后可以像这样调用NativeJSON.parse:

  • 来自实体框架后台,我可以将ORM结果强制转换为包含完整后端模型数据子集的类。 我有一个JAX-RS REST服务,在那里我通常返回如下内容 我知道我能做到: 但是,我可以a:将我的结果强制转换为一个单独的类,或者B在我的createquery中命名我的字段,以便在返回我的JSON时命名它们吗? 例如,在.NET领域,我可以做一些类似于.... 然后将其转换为其他类型。我尝试使用typedquery

  • 我的接口定义为: 然而,这还不够明确,因为我不知道返回的是什么字段。我想要像这样的东西: 但是这会引发NameError,因为还没有定义结果类。是否有任何方法可以指定函数的返回类型(以便内部成员可以通过点运算符访问),而无需为每个函数显式创建结果类? EDIT我没有在他们自己的模块中进行定义,因为我认为会有太多名字尴尬冗长的模块。定义一个内部类会更好,因为它不会每次都强制创建一个新的类名,而且,因

  • 问题内容: 我有两个实体。一个继承自另一个。 例: 当我在EntityManager上使用现有汽车ID调用find()时,如下所示: 我得到了一个代理对象,但是我需要访问CarEntity类的特殊方法,因为我想设置一些新参数。 有人可以帮我吗? 当然,这只是一个示例问题。更具体地说:在调用find之后,我正在检查返回对象的实例,如果它是“ CarEntity”,则我设置参数,否则,我什么也不做。除