GORM无法发出HQL请求

时间:2011-10-21 14:31:41

标签: grails hql gorm

我和Grails有一个奇怪的错误。我想找回一些持久化数据,所以我为它执行一个HQL查询。我需要从域类中检索一个列表,该列表具有manyToOne关系。

查询非常基本,请自行查看:

def listActuel = PositionnementProfil.find("FROM PositionnementProfil as pp where pp.positionnement.libelle='actuel'")

但是我收到了这个错误:

  

错误500:执行控制器[package.ProfilController]的操作[positionnement]导致异常:无效查询[FROM PositionnementProfil as pp where pp.entreprise.libelle ='Orange'] for domain class [class package.PositionnementProfil]

所以毫无疑问,我已经尝试了一个更基本的查询,只是为了确保,并且当我继续犯这个错误时,我决定尝试另一个类。用这段代码仍然得到了这个奇妙的信息:

def test = Profil.find("FROM Profil as p where p.firstName like='Jean'")
//NOtice I executed more complex queries on this class with success, here not
虽然我是grails的新手,但我认为我不是一个菜鸟(请上帝,告诉我,我做的一切都是正确的:D),我再次关注grails doco(http://grails.org/ doc / latest / guide / 5.%20Object%20Relational%20Mapping%20%28GORM%29.html#5.4.3%20Hibernate%20Query%20Language%20%28HQL%29),我通过执行“grails clean”清理了我的项目,重新启动我的电脑,仍然有这个很好的问题。我不知道为什么,但它似乎只在我的代码的这一部分有麻烦:

class ProfilController {

def scaffold = Profil


    def positionnement = {
        def test = Profil.find("from profil as p where p.firstName like 'Jean'")
    }

    //... I've put this code in other places, but I don't believe in "supernatural" places
}

我真的不知道如何摆脱这种局面。其他症状,Netbeans没有看到GORM自动完成。

1 个答案:

答案 0 :(得分:1)

我想我记得最近一个问题是find()findAll()区分大小写,但由于修复程序将在2.0中,因此无法帮助您。但是简单的解决方法是使用executeQuery(),因为它只是直接挂钩Hibernate HQL:

def listActuel = PositionnementProfil.executeQuery(
       "FROM PositionnementProfil as pp where pp.positionnement.libelle='actuel'")[0]

除了方法名称之外唯一的区别是,因为executeQuery()返回List,您需要使用[0] st 元素>