2012-06-25 18 views
6

Tôi đang cố gắng duy trì các đối tượng miền xuân-bảo mật-acl trong mongodb bằng cách sử dụng plugin mongo grails. Trong khi thực hiện dòng mã sau đâyCác truy vấn dựa trên chuỗi như [executeQuery] hiện không được hỗ trợ trong việc triển khai GORM

aclUtilService.addPermission Phone.class, phoneInstance.id, new PrincipalSid(username), BasePermission.ADMINISTRATION 

tôi nhận được lỗi sau:

truy vấn Chuỗi dựa trên như [executeQuery] hiện đang không được hỗ trợ trong việc thực hiện này của GORM. Sử dụng tiêu chí để thay thế .. Stacktrace theo sau: Thông báo: Các truy vấn dựa trên chuỗi như [executeQuery] hiện không được hỗ trợ trong việc triển khai GORM này. Sử dụng tiêu chí thay thế.

Bất kỳ khó khăn nào?

**Grails Configuration Details:** 
app.grails.version=2.0.3 
app.name=eateri 
app.servlet.version=2.5 
app.version=0.1 
plugins.mongodb=1.0.0.RC5 
plugins.spring-security-acl=1.1 
plugins.spring-security-core=1.2.7.2 
+5

GORM cho mongo db không hỗ trợ truy vấn HQL - aclUtilService.addPermission có thể sử dụng hql gây ra lỗi này –

+0

@sudhir Cảm ơn phản hồi của bạn! – Hari

+1

bạn có gặp phải vấn đề này trong khi chạy thử nghiệm đơn vị không? Nó không hỗ trợ cho các truy vấn trong đơn vị: – ACM64

Trả lời

0

Như @sudhir đề cập, có một số phương pháp trong aclService sử dụng phương pháp HQL executeQuery, như:

protected AclObjectIdentity retrieveObjectIdentity(ObjectIdentity oid) { 
     return AclObjectIdentity.executeQuery(
       "FROM AclObjectIdentity " + 
       "WHERE aclClass.className = :className " + 
       " AND objectId = :objectId", 
       [className: oid.type, 
       objectId: oid.identifier])[0] 
     } 

Nhưng Plugin MongoDB GORM không hỗ trợ HQL, do đó con đường gọi với mà mã mùa thu của bạn vào HQL lỗi giống như:

aclUtilService.addPermission -> aclService.createAcl -> retrieveObjectIdentity

Và hai phương pháp aclService khác sử dụng HQL:

deleteEntries, findChildren

Vì vậy, một giải pháp đơn giản cho việc này là lưu trữ các đối tượng ACL trong mysql và enable hibernate working with mongodb gorm.

Anther one là ghi đè lên 3 phương thức aclService này với meta programming.

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