2014-12-09 2 views
0

Grails에서 다 대다 관계에 대한 조인 테이블에 특정 쌍이 있는지 확인하기 위해 HQL 쿼리를 작성하려고합니다.HQL - 직접 조인 테이블에

는 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을 작성하는 방법을 알아낼 수 없습니다 그래서 무신론자 데이터베이스입니다.

내가 오류가 나타날 프로젝트에 기존 작업을 추가 할 때이 질문에 대한 이유는 다음과 같습니다 (높이 : TRUE) projectInstance.addToTasks (작업) .save :

경우]

예를 작업이 이미 프로젝트에 존재합니다. 데이터베이스에서 중복 된 기본 키 오류가 발생할 것으로 예상되었지만 이에 관한 알림을받지 못했습니다. 그것은 단순히 자동으로 실패합니다. ValidationException를 던졌습니다 :

당신에게

답변

0

당신은 PARAM을 전달할 수 있습니다 "진정한 failOnError을"감사합니다. SQLException을 catch하는지 모릅니다. 그것을 시도하지 않았습니다. 또한 DataSource.groovy에서 logSql = true를 설정하여 콘솔에 쿼리를 인쇄 할 수 있습니다. 희망이 도움이됩니다.

0

최대 절전 모드가 아닌 SQL 방식 인 조인 테이블을 조종해서는 안됩니다. 당신이 직면 할 수있는 문제는 최대/절전 모드에서 다 - 대 - 다 관계가 작동하는 방식과 관련이 있습니다.

문제를 해결해야하고 당신이 할의 수 있어야, (당신은 지속적인 데이터베이스를 사용하는 경우 마이그레이션을 실행/및 생성) mappedBy = [project: "none"]Task 클래스에 정적 추가

projectInstance.addToTasks(task).save(flush : true)

그럴 수 없어 이 경우 Proyect 클래스의 mappedBy = [tasks: "none"]도 필요하면 지금 기억하십시오.