[hibernate-issues] [Hibernate-JIRA] Commented: (ANN-140) Discriminator column not supported with JOINED strategy

Erwin Bolwidt (JIRA) noreply at atlassian.com
Sun Dec 3 09:00:05 EST 2006


    [ http://opensource.atlassian.com/projects/hibernate/browse/ANN-140?page=comments#action_25541 ] 

Erwin Bolwidt commented on ANN-140:
-----------------------------------

I don't understand Gavin's stance on this issue.
Yes, Hibernate is very smart and its way of doing joined subclasses has superios performance over implementations that require a discriminator column.
But hibernate's algorithm doesn't prevent a discriminator column. In fact, Hibernate itself supports discriminator columns with joined subclasses, so why are you explicitly disallowing it in hibernate annotations?

It leaves users out in the cold who are using a legacy database; the only way to get around it is to not use annotations for the superclass and all subclasses.

In addition to that, even if a discriminator column never gives any performance bonuses, it still makes the database model more resilient. If for some reason (dbas mucking about the database by hand, other apps interfering with the direct use of sql) data ends up in multiple subclass tables, a discriminator column makes it possible to clean up the database, since it is the judge on what the intended subclass was.

Please change the three lines of code and make it possible to configure discriminator columns with joined subclasses using hibernate annotations.



> Discriminator column not supported with JOINED strategy
> -------------------------------------------------------
>
>          Key: ANN-140
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-140
>      Project: Hibernate Annotations
>         Type: Bug

>     Versions: 3.1beta6
>  Environment: Hibernate 3.1rc2, Hibernate Annotations 3.1b6
>     Reporter: Steven Grimm

>
>
> Section 9.1.27 of the EJB3 persistence public draft says, "The DiscriminatorColumn annotation is used to define the discriminator column for SINGLE_TABLE and JOINED mapping strategies." But Hibernate ignores the DiscriminatorColumn annotation when the mapping strategy is JOINED; when a JOINED entity is persisted, its discriminator column is not included in the SQL "insert" statement, resulting in a not-null constraint violation if the discriminator column is marked NOT NULL in the database.
> The JOINED strategy with discriminators is pretty ubiquitous in EJB3 sample code and tutorials out on the net, so lots of people are likely to run into this as they try out EJB3 for the first time. A few examples:
> http://www.oracle.com/technology/tech/java/oc4j/ejb3/howtos-ejb3/howtoejb30inheritance/doc/how-to-ejb30-inheritance.html
> http://www.solarmetric.com/Software/Documentation/4.0.0EA/docs/full/html/ejb3_overview_mapping_discrim.html
> http://www.caucho.com/resin-3.0/amber/tutorial/cmp-inherit/index.xtp

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira




More information about the hibernate-issues mailing list