[
https://issues.jboss.org/browse/JBIDE-12637?page=com.atlassian.jira.plugi...
]
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/SequenceGen...]
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/or...]
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)