Grails HQL-直接查询联接表
我希望编写一个HQL查询来检查Grails中多对多关系的联接表中是否存在特定的对 SQL很简单:Grails HQL-直接查询联接表,grails,many-to-many,hql,Grails,Many To Many,Hql,我希望编写一个HQL查询来检查Grails中多对多关系的联接表中是否存在特定的对 SQL很简单: SELECT count(*) FROM [ProjectCalculator].[dbo].[task_project] WHERE task_id=[task_id] AND project_id=[project_id] 代码: 我不知道如何为此编写HQL,因此它与数据库无关 出现此问题的原因是,当我将现有任务添加到项目中时,我没有收到任何错误: 例: projectInstance.add
SELECT count(*)
FROM [ProjectCalculator].[dbo].[task_project]
WHERE task_id=[task_id] AND project_id=[project_id]
代码:
我不知道如何为此编写HQL,因此它与数据库无关
出现此问题的原因是,当我将现有任务添加到项目中时,我没有收到任何错误:
例:
projectInstance.addToTaskstask.saveflush:true
如果该项目的任务已经存在,我会期望从数据库中获得一个重复的主键错误,但我没有收到任何关于此的通知。它只是默默地失败了
谢谢您可以传递参数failOnError:true,该参数引发ValidationException。不知道它是否捕获SQLException。我没试过。 您还可以在DataSource.groovy中设置logSql=true,以便在控制台中打印查询。
希望这有帮助。您不应该查询联接表,这是SQL方式,而不是Hibernate方式。 您可能面临的问题与hibernate/grom中的多对多关系有关 将static mappedBy=[project:none]添加到Task类中,并生成/运行迁移(如果您使用的是持久性数据库),这将解决您的问题,并且您应该能够这样做 projectInstance.addToTaskstask.saveflush:true 我现在不记得在这种情况下是否还需要Proyect类中的mappedBy=[tasks:none]
class Project {
String title
...
static belongsTo = [Task, Modifier]
static hasMany = [tasks:Task, modifiers : Modifier]
...
}
class Task {
String description
static hasMany = [project:Project]
...
}