簡體   English   中英

從1.3.7升級到2.2.2后,域類關系查詢不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM