簡體   English   中英

是否可以為grails域對象保存特定的ID?

[英]Is it possible to save a specific id for a grails domain object?

我正在嘗試將一個域對象的屬性復制到另一個類似的域對象(基本上將已退役的數據從存檔集合移動到活動的對象)。 但是,當我嘗試使用手動輸入的id保存時,保存實際上不會將任何內容放入集合中。

def item = new Item(style: "631459")
item.id = new ObjectId("537da62d770359c2fb4668e2")
item.save(flush: true, validate: false, failOnError:true)

failOnError不會拋出異常,看起來保存工作正常。 此外,如果我在item.save上打印它將返回正確的ID。 我認為您可以在域對象上放置特定的ID是錯誤的嗎?

您可以將id生成器設置為“已分配”,這樣您就可以將所需的值和將要保存的值一起保存。

class Item {

...

    static mapping = {
        id generator:'assigned'
    }
}

標識符id是一個有點敏感的名稱。 如果你檢查你的dbconsole,你會發現即使沒有詢問,GORM也為你提供了一個。 當您自己使用該名稱時,會發生混淆。 Grails會用println的東西來尊重你,但是GORM對id如何被初始化和存儲有了最后的說法,那么它就不會聽你的了。

您可以將id重命名為其他內容,就像您在本文中看到的那樣,也許您可​​以自己使用名稱ID 否則,我建議將ID留給GORM,並為您的舊密鑰設置自己的標識符。 無論如何,您都不會有檢索數據的問題,也不會出現性能問題。

暫無
暫無

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

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