2011-02-10 33 views

Trả lời

9

Giới thiệu concat: nó hoạt động chính xác theo cách tương tự như trong MySQL (nó nối chuỗi, nó không phải là hàm tổng hợp).

Bạn có thể thêm group_concat làm chức năng sql vào cấu hình của mình. Bằng cách này, bạn giả định rằng DB underlaying biết hàm này và bạn buộc chương trình của mình thành MySQL.

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())); 

Bạn cũng chỉ ra rằng đầu ra của hàm là một chuỗi. Nếu không có điều này khi bạn group_concat trường số Hibernate sẽ giả định kết quả cũng là số và sự cố.

+3

+1 để đề cập đến bạn tự buộc mình vào mysql. group_concat không có sẵn trong, nói, máy chủ sql microsoft. hibernate nhằm mục đích để được nhà cung cấp sql độc lập. – Terraego

1

subclass phương ngữ

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

hoặc sử dụng SQLFunctionTemplate

1

Nếu bạn đang sử dụng createSQLQuery, sử dụng addScalar để cột đó là String.

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

'Hibernate.STRING' đã không còn được dùng kể từ phiên bản Hibernate 3.6.X [Đây là tài liệu không được chấp nhận] (https://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/Hibernate.html) , vì vậy bạn phải sử dụng 'StringType.INSTANCE'. –

Các vấn đề liên quan