2012-06-25 22 views
6

'un bu uygulamasında şu anda desteklenmemektedir. Mongo eklentisi kullanılarak mongodb'deki spring-security-acl etki alanı nesnelerini sürdürmeye çalışıyorum. kod[executeQuery] gibi dize tabanlı sorgular, GORM

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

ben hata aşağıdaki alıyorum aşağıdaki satırı yürütülürken: [executeQuery] gibi

Dize tabanlı sorgular halen Gorm bu uygulamada desteklenmemektedir. Bunun yerine kriterleri kullanın .. Stacktrace aşağıdakileri izler: İleti: [executeQuery] gibi dize tabanlı sorgular şu anda GORM uygulamasında desteklenmemektedir. Bunun yerine kriterleri kullanın.

Herhangi bir şey var mı? @sudhir belirtildiği gibi

**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

mongo db için GORM HQL sorgularını desteklemiyor - aclUtilService.addPermission muhtemelen hql'yi kullanıyor ve bu hataya neden oluyor –

+0

@sudhir Cevabınız için teşekkürler! Ünite testleri çalışırken – Hari

+1

bunu yaşıyor musunuz? Birimdeki sorgularda destek yoktur: – ACM64

cevap

0

gibi, hql executeQuery yöntemi kullanılarak aclService bazı yöntemler vardır:

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

Ama mongodb gorm eklentisi HQL desteklemez, bu nedenle arama yolu hangi kod sonbahar ile

:

aclUtilService.addPermission -> aclService.createAcl -> retrieveObjectIdentity

Ve diğer iki aclService yöntemleri HQL kullanarak: gibi hql içine hatadır

deleteEntries, findChildren

Bunun için basit bir çözüm, ACL nesnelerini mysql ve enable hibernate working with mongodb gorm'da saklamaktır. Bu 3 aclService yöntemini meta programming ile geçersiz kılmaktır.