[英]Base class is added to Subclass with tablePerHiearchy false on SQL Created with Grails 2.3.2 and Hibernate 3.6.10.3 after Migrating from Grails 1.3.7
[英]Domain classes relations query not working after upgrade grails from 1.3.7 to 2.2.2
我正在將grails應用程序從grails版本1.3.7升級到2.2.2。 除此代碼外,我使大多數代碼都可以工作。 相同的代碼在grails 1.3.7中工作,但是在grails 2.2.2中停止工作並出現錯誤。 請幫忙。 這是導致問題的類。 域類User,UserConfig和Service類UserService。
public class User implements Serializable {
String id
...
static hasMany = [userConfigs:UserConfig]
static mapping = {
version false
table 'c_user'
id column: 'id'
}
}
public class UserConfig implements Serializable
{
UserProfile profile
String genesysUserId
static belongsTo = [user: User]
static mapping = {
version false
table 'sp_user_config'
id composite:['user', 'profile']
user column: 'user_id'
profile column: 'profile_id', lazy: false
}
}
public class UserService {
boolean transactional = true
def getUserList(groupIdList) {
def userList = User.list()
userList.findAll() { user ->
user.userConfigs?.find() { userConfig ->
groupIdList.contains(userConfig?.profile?.group?.id)
}
}
}
}
我上課了 java.lang.IllegalArgumentException消息:類UserService.groovy中的參數類型不匹配
user.userConfigs?.find() { userConfig->
和line userList.findAll() { user->
如果我將“ List userConfigs”添加到用戶域類為
public class User implements Serializable {
String id
List<UserConfig> userConfigs
...
static hasMany = [userConfigs:UserConfig]
static mapping = {
version false
table 'c_user'
id column: 'id'
}
}
我得到了類:java.sql.SQLException消息:ORA-00904:“ USERCONFIG0 _”。“ USER_CONFIGS_IDX”:來自同一類UserService和同一行代碼的無效標識符。
這是grails發行版還是休眠發行版的新版本?
第一件事,也是最簡單的事情,如果您將子項作為列表(在本例中為List),那么hibernate希望看到表中的索引列,以便它知道將每個子項放在列表中的哪個位置。 SQL異常似乎指出了這一點。
至於第一個問題,它似乎並不是一個休眠的問題,因為您只是在迭代已加載的對象。 您沒有包括UserProfile,因此不確定它是否與該對象有關。
我的第一步是將一些日志記錄到這些閉包中,然后看看發生了什么。 或者,如果您是調試器迷,請使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.