Hibernate 将grails从1.3.7升级到2.2.2后,域类关系查询不起作用
我正在将我的grails应用程序从grails版本1.3.7升级到2.2.2。除此之外,我使大多数代码都能工作。同样的代码在Grails1.3.7中工作,但在Grails2.2.2中停止工作并出现错误。请帮忙。下面是导致问题的类。 域类User、UserConfig和服务类UserServiceHibernate 将grails从1.3.7升级到2.2.2后,域类关系查询不起作用,hibernate,grails,Hibernate,Grails,我正在将我的grails应用程序从grails版本1.3.7升级到2.2.2。除此之外,我使大多数代码都能工作。同样的代码在Grails1.3.7中工作,但在Grails2.2.2中停止工作并出现错误。请帮忙。下面是导致问题的类。 域类User、UserConfig和服务类UserService public class User implements Serializable { String id ... static hasMany = [userConfigs:UserCon
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->
和行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\u CONFIGS\u IDX:来自同一类UserService和同一行代码的无效标识符
这是grails问题还是hibernate问题的新版本?第一件事,也是最简单的一件事是,如果您将子项作为列表,hibernate希望在表中看到一个索引列,以便知道每个子项在列表中的位置。SQL异常似乎指向了这一点 至于第一个问题,它似乎不是hibernate问题,因为您只是在已经加载的对象上进行迭代。您没有包括UserProfile,所以不确定它是否与该对象有关
我的第一步是将一些日志记录到这些闭包中,看看发生了什么。或者如果你是调试器迷,请使用它。请发布完整的stacktrace和服务代码。你在服务方法中使用@TypeChecked吗?我没有使用@TypeChecked注释。有趣的是,UserService中的同一段代码可以在在Grails控制台中成功运行。发现UserService类中的同一段代码可以成功运行而没有问题是非常有趣的。那么,tomcat插件是否可能存在问题?请注释掉userConfigs行列表,看看是否有效。或者,添加到oracle抱怨的列中