如何将createCriteria用于subQuery。 我的HQL是这样的:
def lists = List.executeQuery(“FROM list cl WHERE cl.brand_id in(SELECT b.id FROM Brand b WHERE cl.brand_id = b.id AND b.brand_name rLIKE'^ [0123456789]。*')” )
请告诉我们如何使用Createcriteria写这个?
提前感谢。
答案 0 :(得分:0)
似乎Hibernate不支持rlike或regexp功能(参见http://opensource.atlassian.com/projects/hibernate/browse/HHH-3404) 但是Grails确实做到了!
为此你需要使用createCriteria(而不是executeQuery) 根据此讨论http://n4.nabble.com/Using-rlike-in-a-gorm-query-td1391934.html和http://jira.codehaus.org/browse/GRAILS-3481,您的解决方案将是:
def c = List.createCriteria();
results = c {
rlike("name", "^[0123456789].*")
}
注意:它可能仅适用于MySQL和Oracle
答案 1 :(得分:0)
在查询域对象的属性时,您需要在条件中使用属性的名称进行阻止。类似的东西:
def criteria = List.createCriteria();
def results = criteria {
brand {
rlike("name", "^[0123456789].*")
}
}
中的“查询关联”部分