java-Hibernate 5的自定义序列生成器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-Hibernate 5的自定义序列生成器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2287字,纯文字阅读大概需要4分钟。
内容图文
我想在Hibernate 5中创建一个自定义序列生成器,以便在Postgresql中为每个表创建一个序列.使用Hibernate 4,我在方言中执行了以下操作:
/**
* Get the native identifier generator class.
*
* @return TableNameSequenceGenerator.
*/
@Override
Class<?> getNativeIdentifierGeneratorClass() {
TableNameSequenceGenerator
}
/**
* Creates a sequence per table instead of the default behavior of one sequence.
* From <a href='http://www.hibernate.org/296.html'>http://www.hibernate.org/296.html</a>
*/
static class TableNameSequenceGenerator extends SequenceGenerator {
/**
* {@inheritDoc}
* If the parameters do not contain a {@link SequenceGenerator#SEQUENCE} name, we
* assign one based on the table name.
*/
@Override
void configure(final Type type, final Properties params, final Dialect dialect) {
Boolean sequencePerTable = Holders.config.getProperty(SEQUENCE_PER_TABLE, Boolean, true)
if (sequencePerTable) {
if (!params.getProperty(SEQUENCE)) {
String tableName = params.getProperty(TABLE)
String schemaName = params.getProperty('schemaName')
if (schemaName) {
params.setProperty(SCHEMA, schemaName)
}
if (tableName) {
params.setProperty(SEQUENCE, "seq_${tableName}")
}
}
}
super.configure(type, params, dialect)
}
}
我正在尝试迁移到Hibernate 5,但是我不知道如何配置以前的行为.我已经修改了代码以从SequenceStyleGenerator扩展,因为现在不推荐使用SequenceGenerator,但是我的代码从未执行过.我认为这与以下事实有关:方法getNativeIdentifierGeneratorClass也已被弃用.
我一直在寻找一种创建自定义序列的方法,但是我发现的所有示例都集中在用序列生成器注释域类.我正在寻找的是一种以全局方式定义所有序列的方法.
解决方法:
正如Graeme指出的(https://github.com/grails/grails-core/issues/10234),该序列的默认名称在Hibernate 5中已更改,因此添加
id生成器:??“序列”,参数:[sequence_name:’book_seq’]
映射块就可以了.问题是有必要将其添加到每个域类中.
我仍在寻找一种全局定义该设置的方法,也许为每个实体将preferred_sequence_per_entity设置为true.
更新:最后,我们找到了一种解决方法,可以全局定义每个表的序列.只需将以下内容添加到文件application.groovy中:
grails.gorm.default.mapping = {
id generator: 'org.hibernate.id.enhanced.SequenceStyleGenerator', params: [prefer_sequence_per_entity: true]
}
内容总结
以上是互联网集市为您收集整理的java-Hibernate 5的自定义序列生成器全部内容,希望文章能够帮你解决java-Hibernate 5的自定义序列生成器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。