我正在寻找编写HQL查询,以检查Grails中多对多关系的联接表中是否存在特定对。
SQL很简单:
SELECT count(*)
FROM [ProjectCalculator].[dbo].[task_project]
WHERE task_id=[task_id] AND project_id=[project_id]
代码:
class Project {
String title
...
static belongsTo = [Task, Modifier]
static hasMany = [tasks:Task, modifiers : Modifier]
...
}
class Task {
String description
static hasMany = [project:Project]
...
}
我不知道如何为此编写HQL,因此它与数据库无关。
出现此问题的原因是,当我将现有任务添加到项目中时,我没有收到任何错误:
例如:
projectInstance.addToTasks(task).save(flush:true)
如果项目的任务已经存在,那么我希望从数据库中获得重复的主键错误,但是我不会收到任何有关此的通知。它只是默默地失败。
谢谢
最佳答案
您可以传递参数“failOnError:true”,该参数抛出ValidationException。不知道它是否捕获SQLException。还没试过
您也可以在DataSource.groovy中将logSql = true设置为在控制台中打印查询。
希望这可以帮助。
关于grails - HQL-直接查询联接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380446/