首页 文章

查询我的JPA提供程序(Hibernate)以获取实体的<Id,Name>集合

提问于
浏览
0

我有一个看起来像这样的实体:
Id(PK)名称
其他商业地产和协会......

我需要我的DAL(带有hibernate作为提供者的JPA)返回与某些约束相关的实体列表(或者只返回它们全部)但不是返回实体本身我只想接收Id和名称属性 .
我知道这可以通过HQL / SQL实现(类似于:选择id,来自实体的名称......)但我不想走这条路 .
我在考虑以某种方式将该对定义为实体的一个组成部分,并认为这可能对我有所帮助,但我认为这是一个PK,而我是'm not sure that' s "legal" .
此方案的逻辑是具有一个文本框,该文本框异步查询相关实体的Web服务(以及通过它的DAL),一旦选择了实体,它就作为一个整体加载并运送到前端 .

Update:
我现在非常有信心我将使用JPA的CriteriaBuilder接口来构建查询,因此JPQL / HQL完全不在桌面上 .
我想我可能正在寻找JPA 's equivalent to Hibernate'的resultTransformer(我会给它一个非持久化的类) .

非常感谢任何反馈,
以太

2 回答

  • 1

    抱歉忽略了这一点,因为我错过了"dont want to do HQL"你问题的一部分

    HQL select子句非常灵活 . 如果您只需要两个属性就可以使用

    select new MyClass(foo.id,foo.name) From Foo foo
    

    其中MyClass是带有构造函数(id,name)的java类 .

    如果您不想创建单独的类,HQL可以返回Object类型的数组 .

    select foo.id,foo.name From Foo foo
    

    请阅读文档中有关select子句here的详细信息

  • 0

    鉴于您的要求,我猜HQL或JPQL是最佳选择,您更改字段名称的频率如何?
    您可以使用@NamedQuery将HQL保存在同一个实体类中,这样如果更改字段名称,就不会错过该更改 .

相关问题