[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