[jbosstools-issues] [JBoss JIRA] (JBIDE-12637) Hibernate Tools generates @SequenceGenerator with not unique name
Tamás Ábele (JIRA)
issues at jboss.org
Tue Apr 12 15:28:00 EDT 2016
[ https://issues.jboss.org/browse/JBIDE-12637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13190812#comment-13190812 ]
Tamás Ábele commented on JBIDE-12637:
-------------------------------------
To provide a solution which can produce useable POJO-s is simple, so it's very surprising that after 4 years this blocking bug isn't fixed.
I just simply modified the generateAnnIdGenerator() method in EntityPOJOClass to the following:
{code:java}
builder
.resetAnnotation(importType("javax.persistence.GeneratedValue"))
.addAttribute("strategy", staticImport("javax.persistence.GenerationType", "SEQUENCE"))
.addQuotedAttribute("generator", clazz.getClassName()+"IdGenerator");
idResult.append(builder.getResult());
builder
.resetAnnotation(importType("javax.persistence.SequenceGenerator"))
.addQuotedAttribute("name", clazz.getClassName()+"IdGenerator")
.addQuotedAttribute("sequenceName", properties.getProperty(org.hibernate.id.SequenceGenerator.SEQUENCE, null));
{code}
> Hibernate Tools generates @SequenceGenerator with not unique name
> -----------------------------------------------------------------
>
> Key: JBIDE-12637
> URL: https://issues.jboss.org/browse/JBIDE-12637
> Project: Tools (JBoss Tools)
> Issue Type: Bug
> Components: hibernate
> Affects Versions: 4.0.0.Alpha1
> Reporter: Nicolas Bihan
> Assignee: Koen Aers
> Priority: Blocker
> Labels: SequenceGenerator, hibenate, hibernate-tools, jpa
> Fix For: 4.0.x, 4.1.x
>
>
> When generating entities with EJB3 annotations with a strategy set to "sequence", Hibernate tools generates POJOs with non unique javax.persistence.SequenceGenerator name "generator". But according to the Java documentation :
> bq. String name (Required) A unique generator name that can be referenced by one or more classes to be the generator for primary key values.
> See [javadoc|http://docs.oracle.com/javaee/5/api/javax/persistence/SequenceGenerator.html]
> Exemple of generated code with 4.0.0 Alpha1:
> {code}
> @SequenceGenerator(name = "generator", sequenceName = "S_CLIENT")
> @Id
> @GeneratedValue(strategy = SEQUENCE, generator = "generator")
> @Column(name = "CLIENT_ID", unique = true, nullable = false, precision = 22, scale = 0)
> public long getClientId() {
> return this.clientId;
> }
> {code}
> [Source code|https://github.com/hibernate/hibernate-tools/blob/master/src/java/org/hibernate/tool/hbm2x/pojo/EntityPOJOClass.java#L243] can be seen here.
> So looks like the //TODO comment is right and it should generate a unique name atribute. sequencename+"generator" would be a good name.
> It would even be better if we could define this name in reveng.xml or/and in a DelegatingReverseEngineeringStrategy class.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the jbosstools-issues
mailing list