我正在尝试使用 Panache+Hibernate 从我的数据库中获得一列的不同结果。ArrayList<String>
通常在 Hibernate 中,您会从查询中得到回复。
List<String> list = repo
.find("select DISTINCT(a.country) from TMdBrandAll a order by a.country")
.page(Page.ofSize(1000)).list();
但是,如果我使用 Panache 尝试这种方法,我会收到 ErrorMessage Comiler 错误消息
如果我将变量“list”更改为 returnType List<TMdBrandAll>
,编译错误就消失了。
List<TMdBrandAll> list = brandAllRepo
.find("select DISTINCT(a.country) from TMdBrandAll a order by a.country")
.page(Page.ofSize(1000)).list();
当我现在在调试器中检查执行的代码时,我得到了。 调试器输出
我如何告诉 Panache 查询的结果将是 anArrayList<Strings>
而不是 an ArrayList<PanacheEntity>
?
感谢您的回答
编辑:回购代码:
@RequestScoped
@Transactional
public class BrandAllRepo implements PanacheRepositoryBase<TMdBrandAll, Long> {
public void updateBrand(String brandName, String soundexCode, String countryCode, Long active, Long isNew, String user, Long brandAllId) {
update("set brandName = ?1, soundexCode = soundex(pkg_util.f_escape_special_char1(?2))," +
" countryCode = ?3, active = ?4, isNew = ?5, modifiedAt = sysdate, modified_by = ?6 where brandAllId = ?7",
brandName, soundexCode, countryCode, active, isNew, user, brandAllId);
}
}
来自回购的工作代码:
@Inject
EntityManager em;
public List<String> findCountries() {
List<String> qres = em
.createQuery("select DISTINCT(a.countryCode) from TMdBrandAll a order by a.countryCode", String.class)
.getResultList();
return new ArrayList<>(qres);
}
通过注入的 EntityManager 和标准休眠查询,它可以工作。