Java 基于指定列的动态查询

Java 基于指定列的动态查询,java,object,Java,Object,我有一张大桌子,大约有20块地。我是否可以基于一个查询返回一个列表元素,比如id、created_on、temperature,而不在类T中为每个可能的字段组合创建构造函数 让我们这样说: Query q = em.createQuery("SELECT id, created_on, temperature FROM Table"); result = (List<T>) q.setMaxResults(300).getResultList(); Query q=em.creat

我有一张大桌子,大约有20块地。我是否可以基于一个查询返回一个列表元素,比如id、created_on、temperature,而不在类T中为每个可能的字段组合创建构造函数

让我们这样说:

Query q = em.createQuery("SELECT id, created_on, temperature FROM Table");
result = (List<T>) q.setMaxResults(300).getResultList();
Query q=em.createQuery(“选择id,创建时间,表中的温度”);
结果=(列表)q.setMaxResults(300).getResultList();

如果我没有针对这种特定情况的构造函数,它是否有效?我能得到一个T对象的列表吗?

使用起来会更简洁,但是如果您想拥有20个列的许多不同组合,单独选择它们会得到一个返回类型
Object[]
,列值在各自的索引中


因此,不,您不会得到一个
列表
,您会得到一个
列表

您在这里的最佳选择可能是尝试为每个记录返回一个
对象[]
,这取决于您使用的工具/框架。然后,在应用程序代码中分类哪个列属于哪种类型。尽管所有/大多数变量都有数据,但创建一个类的实例时只需要为少数实例成员提供值,这是一个奇怪的要求。如果对象是可变的,我认为这可能会导致数据不一致。为3个字段创建特定类(或使用集合类),或将所有字段读入专用类。