2012-04-27 3 views
0

У меня есть класс, какGrails FindBy * с собственностью inteface

class Account { 

    BigDecimal balance = 0 
    SortedSet transactions 

    AccountOwner owner 

    static constraints = { 
    } 

    static hasMany = [transactions:Transaction] 
} 

при попытке запросить счет, как

def account = Account.findByOwner(user) 

Я получаю эту ошибку

| Failure: testSave(br.com.fisgo.financial.AccountControllerTests) 
| org.springframework.dao.InvalidDataAccessResourceUsageException: Cannot query [br.com.fisgo.financial.Account] on non-existent property: owner 
    at org.grails.datastore.mapping.simple.query.SimpleMapQuery.getValidProperty(SimpleMapQuery.groovy:706) 
    at org.grails.datastore.mapping.simple.query.SimpleMapQuery.executeSubQueryInternal(SimpleMapQuery.groovy:644) 
    at org.grails.datastore.mapping.simple.query.SimpleMapQuery.executeSubQuery(SimpleMapQuery.groovy:630) 
    at org.grails.datastore.mapping.simple.query.SimpleMapQuery.executeQuery(SimpleMapQuery.groovy:63) 
    at org.grails.datastore.mapping.query.Query.list(Query.java:486) 
    at org.grails.datastore.gorm.finders.AbstractFindByFinder.invokeQuery(AbstractFindByFinder.java:34) 
    at org.grails.datastore.gorm.finders.AbstractFindByFinder$1.doInSession(AbstractFindByFinder.java:26) 
    at org.grails.datastore.mapping.core.DatastoreUtils.execute(DatastoreUtils.java:301) 
    at org.grails.datastore.gorm.finders.AbstractFinder.execute(AbstractFinder.java:40) 
    at org.grails.datastore.gorm.finders.AbstractFindByFinder.doInvokeInternal(AbstractFindByFinder.java:24) 
    at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:151) 
    at org.grails.datastore.gorm.finders.DynamicFinder.invoke(DynamicFinder.java:352) 
    at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:108) 
    at br.com.fisgo.financial.AccountController.buyLead(AccountController.groovy:17) 
    at br.com.fisgo.financial.AccountControllerTests.testSave(AccountControllerTests.groovy:92) 
| Completed 1 unit test, 1 failed in 5414ms 
| Tests FAILED - view reports in target\test-reports 

Используя этот интерфейс

package br.com.fisgo.financial; 

public interface AccountOwner { 

} 

Я использую высмеивал объект для тестирования

Благодаря

+0

Вы можете добавить свой класс домена AccountOwner? – Joseph

+0

package br.com.fisgo.financial; общественный интерфейс AccountOwner { } он находится в файле AccountOwner.java –

ответ

0

С findBy * обрабатываются GORM и GORM не обрабатывает интерфейсы я не думаю, что это будет работать. Не могли бы вы сделать AccountOwner абстрактным классом?

Смежные вопросы