gpt4 book ai didi

java - 通过多个实体进行 hibernate 条件搜索

转载 作者:行者123 更新时间:2023-11-29 07:17:50 24 4
gpt4 key购买 nike

我有三个实体:Log、Employee 和 Agency

记录与员工的多对一关联

与 Agency 具有多对一关联的员工

DetachedCriteria criteria = DetachedCriteria.forClass(Log.class);

if (StringUtils.isNotBlank(c.getName())) {
criteria.createAlias("employee", "e").add(Restrictions.ilike("e.name", "%" + c.getName() + "%"));
}
if (StringUtils.isNotBlank(c.getAgency())) {
criteria.createAlias("employee", "e").createAlias("agency", "a").add(Restrictions.ilike("e.a.name", "%" + c.getAgency() + "%"));
}

以上适用于员工姓名,但不适用于机构名称。

我收到以下错误:

Exception: org.hibernate.QueryException: could not resolve property: agency of: com.example.Log

我找到的所有示例都只下降了一个级别。谁能给我指出一个资源,告诉我如何导航到更低的位置?

最佳答案

试试下面的代码

DetachedCriteria criteria = DetachedCriteria.forClass(Log.class);
criteria.createAlias("employee", "e");

if (StringUtils.isNotBlank(c.getName())) {
criteria.add(Restrictions.ilike("e.name", c.getName(), MatchMode.ANYWHERE));
}

if (StringUtils.isNotBlank(c.getAgency())) {
criteria.createAlias("e.agency", "a"); // <===========
criteria.add(Restrictions.ilike("a.name", c.getAgency(), MatchMode.ANYWHERE));
}

关于java - 通过多个实体进行 hibernate 条件搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com