在hibernate中,我正在创建如下的自定义查询。
Query query = getSession()
.createSQLQuery(
"select t2.* from ( select (select id from ctc_ver_assets ti where ti.ctcassettag = t1.ctcassettag order by ti.createddate desc limit 1) lid from "
+ "( select distinct ctcassettag from ctc_ver_assets) t1) ro, ctc_ver_assets t2 where t2.id = ro.lid and date(createddate) ")
.setResultTransformer(Transformers.aliasToBean(VerificationAsset.class));
我的verificationAsset类包含字段ctcAssetTag,但表中的字段名称是ctcassettag。如何自动将其映射到对象?
我可以像t2.ctcassettag as ctcAssetTag
一样重命名查询中的各个字段。但是我不想为每个字段都这样做,因为我已经在我的Bean类中注释了每个字段,如下所示
@Column(name = "ctcassettag", unique = true, nullable = false)
private String ctcAssetTag;
当我使用标准时它工作正常。如何用查询实现相同的目标?
答案 0 :(得分:0)
您可以使用alias_to_entity_map
,因此您无需声明型号名称。它会根据您的查询映射您的结果。
您可以在模型中创建@transient
字段,以根据需要映射字段。
您可以创建DTO并在aliasToBean(VerificationAssetDTO.class)
中使用它而不是您的解决方案。