我正在创建一个数据集,该数据集具有一些固定的列,以后可以根据需要添加任意数量的列。而且我在Java中使用了Hibernate Entity Manager,但是找不到做到这一点的方法。
我已经使用本机查询完成了此操作,即直接使用statement.executeQuery(不使用hibernate或JPA)。
表结构: |表:X | | id |名称|地址| dynamic_attribute_1 | dynamic_attribute_2 | dynamic_attribute_X |
首先,我没有从信息模式中添加任何dynamic_columns:
String queryTable = "SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'test' AND table_name = 'x'
AND column_name ilike 'ynamic_attribute_%' ";
由于这里的结果是单个列,所以我立即将对象转换为了Sring并添加了额外的列数。
Query query = entityManager.createNativeQuery( queryTable );
List resultList = query.getResultList();
List <String> columns = new ArrayList<>();
for (Object result : resultList ) {
String a;
columns.add(a);
}
然后我查询了类似的结果:
String colsQuery = "SELECT DISTINCT " + String.join(",",columns)
FROM test.x ";
Query colssQ = entityManager.createNativeQuery(colsQuery);
此后,我被困住了,因为结果现在将具有多列,而且我不知道如何创建一个类来获取/映射结果集。 我得到的结果仅在对象中。
我正在获得与Object一样的输出,但有我想要的结果,但是我无法映射和使用它,在类中有没有办法像这样:
@Entity
@Table(name="x")
public class X
{
// @Column(name="x",class="X")
List<Parameter> dynamic_attributes = null;
}
或其他任何方式..