我使用Eclipse Hibernate工具从Oracle数据库创建带有JPA注释的域类。为了控制序列生成,我在hibernate.reveng.xml中添加了以下条目:
...
<primary-key>
`<generator class="sequence">` `<param name="sequence">SEQ_FOO_ID</param>` `</generator>`</primary-key>
...
这将产生以下注释:
@SequenceGenerator(name = "generator", sequenceName = "SEQ_FOO_ID")
然而,我需要像这样设置"allocationSize“:
@SequenceGenerator(name = "generator", sequenceName = "SEQ_FOO_ID", allocationSize = 1)
是否可以在hibernate.reveng.xml中以某种方式设置它?
发布于 2016-10-14 19:13:58
虽然它没有像Guillaume Husta所说的那样得到官方支持,但我设法做到了一个技巧,所以绕过了这个限制。而不是简单地说:
<param name="sequence">MYSEQ</param>您可能会注意到,生成器只在开始和结束时附加引号("),所以您可以在sql注入中执行类似的操作,您只需要jpa注释的另一个参数来结束引号,即使它并不真正使用,例如参数"schema“。
<param name="sequence">MYSEQ", allocationSize = 1, schema="MYSCHEME</param>发布于 2010-09-20 19:19:24
可以,停那儿吧。你必须重写reveng类的策略。
Hibernate帮助中心有文档。
发布于 2014-07-23 23:45:37
这在2014年的Hibernate Tools (4.3.1.CR1)的当前版本中似乎是不可能的!
序列相关的JPA注解是由类EntityPOJOClass中的generateAnnIdGenerator()方法生成的。
源代码摘录(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/)中未发现此问题。
https://stackoverflow.com/questions/2847606
复制相似问题