Проблема с GORM Lazy Loaded List - PullRequest
1 голос
/ 04 мая 2011

У меня сейчас проблема с граалями. У меня есть класс (Item), содержащий список (hasMany = [users: User]), затем User - это класс, содержащий 3 подкласса (SubUser1, SubUser2).

Проблема в том, что когда я касаюсь коллекции, содержащей список пользователей, все содержащиеся в ней объекты относятся к типу User (а не к подклассу, который должен быть правильным).

С этой проблемой невозможно узнать, какого типа пользователь в коллекции.

Вы уже сталкивались с этой проблемой раньше? Вы знаете, как это исправить?

Спасибо, Nicolas

Вот соответствующий фрагмент кода:

/*** Domain Class ***/
class Item {
   List<User> users = []
   static hasMany = [users : User]
}

class User {
   String username
}

class User1 {
   //Some other properties
} 

/*** On the view ***/
item.users
     --> Returns a list of User_$javassist$ and 
     not of type User1 as it should be

1 Ответ

0 голосов
/ 04 мая 2011

У меня есть проект, который использует полиморфизм, как это в Grails. И у меня нет этой проблемы. У меня есть суперкласс имени Media и подклассы, такие как Book и Movie

если я сделаю Media.all.each { it instanceof Movie ? println 'is movie' : 'is not movie' }, то получу ожидаемый результат, где некоторые - это фильмы, а некоторые - не фильмы.

EDIT

Попробуйте эту структуру вместо

class Item {
   static hasMany = [users : User]
   static mapping = {
       tablePerHierarchy false
   }

}

class User {
   String username
}

class User1 extends User {
   //Some other properties
} 
...