我有一个看起来像这样的实体:
身份证号(PK)
姓名
其他商业属性(property)和协会...
我需要我的 DAL(以 hibernate 作为提供者的 JPA)返回与某些约束相关的实体列表(或者只是返回所有实体),但我不想返回实体本身,我只想接收Id 和 Name 属性。
我知道这可以通过 HQL/SQL 来实现(例如:从实体中选择 id、名称...),但我不想走这条路。
我正在考虑以某种方式将这对定义为实体的组成部分,并认为这可能对我有帮助,但我不确定这是否“合法”,因为 Id 就是 PK。
此场景的逻辑是有一个文本框,它异步查询 Web 服务(并通过它的 DAL)查找相关实体,一旦选择一个实体,就会将其作为一个整体加载并发送到前端。
更新:
我现在非常有信心我将使用 JPA 的 CriteriaBuilder 接口(interface)来构建查询,因此 JPQL/HQL 完全不可能。
我想我可能正在寻找相当于 Hibernate 的 resultTransformer 的 JPA(并且我将给它一个非持久类)。
希望得到任何反馈,
伊泰
最佳答案
抱歉,请忽略此问题,因为我错过了问题中的“不想执行 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来自文档
关于java - 查询我的 JPA 提供程序 (Hibernate) 以获取实体的 <Id,Name> 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057928/