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

标签 java hibernate jpa composite


我有一个看起来像这样的实体:
身份证号(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/

相关文章:

java - 如何使用 hibernate 使用现有对象创建复合键对象

java - 如果传入请求的字段少于或超过 POJO,我如何告诉 Hibernate Validator 抛出异常

java - OneToOne Mapping 未设置映射对象

java - 什么是序列化及其工作原理

java - 如何使用数据存储区 java 客户端检索具有重复属性的嵌入式实体

Hibernate:什么是连接池?为什么默认连接池不适合生产?

mysql - JPA EntityExistsException 合并时重复条目?

java - 从 Spring Data JpaRepository 返回 @id 字段

java - 在java中将字符串的一部分转换为int

Java:读取文件时遇到问题