grails - 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]

代码:
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/

相关文章:

email - grails异步邮件服务错误

grails - 在 grails 中验证密码和确认密码的最佳方法是什么?

hibernate - Grails具有许多值为0的条件

python - Django 多对多

java - hql 查询错误

mysql - 配置单元左外连接条件

hibernate - 获取具有特定权限的人员-带有Grails的 Spring 安全

ios - iOS-核心数据关系。映射表/多对多关系

ios - 如何正确配置/形成 NSFetchedResultsController 请求以包含多对多关系?

NHibernate,求和查询