gpt4 book ai didi

database - 手动为 hibernate UUID 赋值

转载 作者:太空狗 更新时间:2023-10-30 01:59:50 25 4
gpt4 key购买 nike

我们知道,在hibernate中,配置一个id的生成器为"uuid",那么hibernate在保存一个新对象时会自动生成一个UUID值到id字段。如果配置生成器为"assigned",id必须在保存对象之前分配一个值。

而且我发现如果将生成器配置为 uuid 并手动为 id 分配一个值,hibernate 会将值更改为一个新的 UUID。

我的问题是,当生成器配置为uuid时,如何手动为其赋值?

PS:我用的是spring HibernateDaoSupport来保存

org.springframework.orm.hibernate3.support.HibernateDaoSupport.save(Ojbect obj)

谢谢!

最佳答案

如果您只在极少数特殊情况下需要它,最简单的方法是在 native SQL 中发出 INSERT 查询,而不是使用 save()

或者,您可以自定义生成器以实现所需的行为:

public class FallbackUUIDHexGenerator extends UUIDHexGenerator {
private String entityName;

@Override
public void configure(Type type, Properties params, Dialect d)
throws MappingException {
entityName = params.getProperty(ENTITY_NAME);
super.configure(type, params, d);
}

@Override
public Serializable generate(SessionImplementor session, Object object)
throws HibernateException {
Serializable id = session
.getEntityPersister(entityName, object)
.getIdentifier(object, session);

if (id == null)
return super.generate(session, object);
else
return id;
}
}

并通过将其完全限定名称设置为 strategy 来配置 Hibernate 以使用它。

关于database - 手动为 hibernate UUID 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390656/

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