2011-02-10 4 views

답변

9

concat : 이것은 MySQL에서와 똑같은 방식으로 작동합니다 (문자열을 연결하면 집계 함수가 아닙니다).

group_concat을 SQL 기능으로 구성에 추가 할 수 있습니다. 이렇게하면 밑에있는 DB가이 함수를 알고 있다고 가정하고 프로그램을 에 묶습니다.

import org.hibernate.cfg.Configuration; 
import org.hibernate.dialect.function.StandardSQLFunction; 
import org.hibernate.type.StringType; 

// ... 
myConf.addSqlFunction("group_concat", new StandardSQLFunction("group_concat", new StringType())); 

또한 함수의 출력이 문자열임을 나타냅니다. 이것을 사용하지 않을 때 group_concat 숫자 필드 Hibernate는 또한 결과를 숫자로 가정하고 충돌합니다.

+3

+1 당신이 mysql에 묶여있다. group_concat은 Microsoft SQL Server에서는 사용할 수 없습니다. hibernate는 SQL 벤더 독립성을 목표로합니다. – Terraego

1

서브 클래스

registerFunction("group_concat", new StandardSQLFunction("group_concat", Hibernate.STRING)); 

또는 createSQLQuery를 사용하는 경우 SQLFunctionTemplate

1

를 사용, String로서 그 칼럼에 addScalar를 사용하는 방언.

SQLQuery query = sessionObj.createSQLQuery("select group_concat(column1,column2) as mycolumn from some table group by someThing"); 
query.addScalar("mycolumn ", Hibernate.STRING); 
+0

Hibernate 버전 3.6.X 이후로 Hibernate.STRING이 사용되지 않음 [다음은 더 이상 사용되지 않는 문서입니다.] (https://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/Hibernate.html) 그래서'StringType.INSTANCE'를 사용해야합니다. –