首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@SequenceGenerator - allocationSize,使用Eclipse Hibernate工具进行逆向工程

@SequenceGenerator - allocationSize,使用Eclipse Hibernate工具进行逆向工程
EN

Stack Overflow用户
提问于 2010-05-17 16:34:53
回答 6查看 3.6K关注 0票数 2

我使用Eclipse Hibernate工具从Oracle数据库创建带有JPA注释的域类。为了控制序列生成,我在hibernate.reveng.xml中添加了以下条目:

...

<primary-key>

代码语言:javascript
复制
 `<generator class="sequence">`
代码语言:javascript
复制
       `<param name="sequence">SEQ_FOO_ID</param>`
代码语言:javascript
复制
 `</generator>`

</primary-key>

...

这将产生以下注释:

@SequenceGenerator(name = "generator", sequenceName = "SEQ_FOO_ID")

然而,我需要像这样设置"allocationSize“:

@SequenceGenerator(name = "generator", sequenceName = "SEQ_FOO_ID", allocationSize = 1)

是否可以在hibernate.reveng.xml中以某种方式设置它?

EN

回答 6

Stack Overflow用户

发布于 2016-10-14 19:13:58

虽然它没有像Guillaume Husta所说的那样得到官方支持,但我设法做到了一个技巧,所以绕过了这个限制。而不是简单地说:

代码语言:javascript
复制
 <param name="sequence">MYSEQ</param>

您可能会注意到,生成器只在开始和结束时附加引号("),所以您可以在sql注入中执行类似的操作,您只需要jpa注释的另一个参数来结束引号,即使它并不真正使用,例如参数"schema“。

代码语言:javascript
复制
   <param name="sequence">MYSEQ", allocationSize = 1, schema="MYSCHEME</param>
票数 3
EN

Stack Overflow用户

发布于 2010-09-20 19:19:24

可以,停那儿吧。你必须重写reveng类的策略。

Hibernate帮助中心有文档。

票数 2
EN

Stack Overflow用户

发布于 2014-07-23 23:45:37

这在2014年的Hibernate Tools (4.3.1.CR1)的当前版本中似乎是不可能的!

序列相关的JPA注解是由类EntityPOJOClass中的generateAnnIdGenerator()方法生成的。

GitHub中的代码:https://github.com/hibernate/hibernate-tools/blob/master/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java#L252

源代码摘录(generateAnnIdGenerator()):

builder.resetAnnotation( importType("javax.persistence.SequenceGenerator") ) .addQuotedAttribute( "name", "generator" ) // TODO: shouldn't this be unique, e.g. entityName + sequenceName (or just sequencename) ? .addQuotedAttribute( "sequenceName", properties.getProperty( org.hibernate.id.SequenceGenerator.SEQUENCE, null ) ); // TODO HA does not support initialValue and allocationSize

在JIRA (https://hibernate.atlassian.net/browse/HBX/)中未发现此问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2847606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档