簡體   English   中英

Grails 2.3.11-對象無法持久

[英]Grails 2.3.11 - Object failing to persist

我正在嘗試使用Grails 2.3.11修改服務中的某些實體。 我已經簡化為以下代碼:

void updateCompanyType(CompanyType type, Map properties) {
    def role = properties.role?.id ==~ /\d+/ ? Role.get(properties.role.id) : null

    role.name = "Super New Name"
    role.save(failOnError: true, flush: true)

    if (type.role != role) {
        type.role = role
    }

    type.name = properties.name
    type.save(failOnError: true)
}

類型成功更新,但角色沒有更新。 對為什么有任何見解? 我知道在服務調用中,我處於事務中,因此無論是否有顯式保存調用,我都嘗試過此操作,這似乎沒有什么區別。

部分看一下Role類:

class Role implements Comparable {

  Integer id
  String name
  String code
  RoleType roleType

嘗試改變

def role = properties.role?.id ==~ /\d+/ ? Role.get(properties.role.id) : null

def role = properties.role?.id ==~ /\d+/ ? Role.get(properties.role.id) : new Role()

如果使用的是Spring Security Role對象,是否已對其進行擴展以將“名稱”添加到該對象? 如果是這樣,您是否在擴展對象中將其定義為“ def name”或“ String name”?

無論哪種方式,如果您在域類中將屬性聲明為“ def”或“ private”,即使您在調試器中查看該屬性,該屬性也將具有該屬性和值,而不會將其持久化到數據庫中。 另外,如果您使用內置的數據庫模式生成器utils和migrations,它實際上是在“角色”表中創建了“名稱”列,還是您手動進行了此操作?

是否需要查看您的域類看起來像“角色”?

我終於通過設置使它起作用

版本為真

在“映射”部分的“我的角色域”對象上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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