gpt4 book ai didi

hibernate - 在 Grails/Hibernate 中,您可以将生成器设置为仅在未分配时递增吗?

转载 作者:行者123 更新时间:2023-12-03 07:02:31 24 4
gpt4 key购买 nike

是否有办法让 hibernate 在未分配的情况下使用自动生成的 id,但在已分配的情况下使用分配的值?

最佳答案

我相信 Grails 中没有现成的解决方案,但实现您自己的 org.hibernate.id.IdentifierGenerator 应该相当简单。

实现该接口(interface),只要没有分配 id,您就会委托(delegate)给默认 id 生成策略,否则使用域对象已分配的值。

在未分配 key 时委托(delegate)给 IdentityGenerator 的简单实现可能如下所示:

package my.company.hibernate

import org.hibernate.engine.SessionImplementor

public class PreAssignedIdGenerator extends org.hibernate.id.IdentityGenerator {
public Serializable generate(SessionImplementor session, Object object) {
return object.id ? object.id : super.generate(session, object)
}
}

您的域类需要定义新的 id 生成器:

class FooDomain { 
Long id
static mapping = {
id generator: "my.company.hibernate.PreAssignedIdGenerator"
}
}

关于hibernate - 在 Grails/Hibernate 中,您可以将生成器设置为仅在未分配时递增吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3043143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com