【发布时间】:2016-03-14 10:17:33
【问题描述】:
让我详细描述问题以避免 X-Y 情况。
我想使用 Hibernate 执行LIKE 查询以检索表Product 中的注册表,其中Product 的User 将我的输入字符串作为全名。 SQL中的一些东西:
SELECT * FROM product WHERE id_user IN (SELECT id_user FROM users WHERE CONCAT(first_name, ' ', last_name) LIKE ?)
我对 Hibernate Criteria 很满意,但在这种情况下,它似乎无法在 Criteria 中组合列值搜索(我不想生成一些自定义的 Criteria),所以我尝试使用 @987654326 @,但我发现在某些情况下createAlia() 很容易而sqlRestriction 是不可能的,例如:
criteria.createAlias("user.supervisor.teamleader", "uT");
所以,我正在考虑另一种解决方案:在User 中创建一个@Transient 字段来存储全名,连接first_name、" " 和last_name,因为现在名为full_name 的列没有'在数据库中不存在,我不想碰表结构,这需要修改生产数据库。
如果我在User 类的默认构造函数中声明full_name 字段,当我从数据库中检索一些User 实体时,该字段会像我预期的那样包含first_name + " " + last_name,还是null?
【问题讨论】:
标签: hibernate criteria default-constructor