[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-6589) Skip non-JPA features populating JPA "static metamodel"

Steve Ebersole (JIRA) noreply at atlassian.com
Fri Mar 2 11:02:49 EST 2012


     [ https://hibernate.onjira.com/browse/HHH-6589?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steve Ebersole updated HHH-6589:
--------------------------------

    Pull Requests: https://github.com/hibernate/hibernate-orm/pull/257  (was: https://github.com/hibernate/hibernate-orm/pull/257)
          Summary: Skip non-JPA features populating JPA "static metamodel"  (was: Support "Any" mappings when building metamodel)

> Skip non-JPA features populating JPA "static metamodel"
> -------------------------------------------------------
>
>                 Key: HHH-6589
>                 URL: https://hibernate.onjira.com/browse/HHH-6589
>             Project: Hibernate ORM
>          Issue Type: Improvement
>          Components: entity-manager
>    Affects Versions: 3.5.6
>         Environment: Hibernate entity manager 3.5.5, PostgreSQL 8.4
>            Reporter: Robert Brady
>            Assignee: Steve Ebersole
>              Labels: jpa2
>             Fix For: 4.1.1
>
>
> I am upgrading from Hibernate 3.2.x to 3.5.5 and getting UnsupportedOperationExceptions thrown when Hibernate is trying to create the metamodel.  This is due to the dependency of my application upon jBPM 3.x, which uses "any" mappings for some of its classes.
> The exception occurs in org.hibernate.ejb.metamodel.AttributeFactory.determineAttributeMetadata(...)
> {noFormat}
> java.lang.UnsupportedOperationException: any not supported yet
> at org.hibernate.ejb.metamodel.AttributeFactory.determineAttributeMetadata(AttributeFactory.java:452)
> {noFormat}
> It is due to the logic in AttributeFactory at line 451:
> {noFormat}
> if ( type.isAnyType() ) {
>    throw new UnsupportedOperationException( "any not supported yet" );
> }
> {noFormat}
> The "Big Hammer" approach of globally disabling the creation of the metamodel with the property setting:
> {noFormat}
> hibernate.ejb.metamodel.generation=disabled
> {noFormat}
> is not feasible: other components in my application depend upon the criteria search api, which need a generated meatamodel.  Splitting the single application persistence unit into two parts ( one for the jBPM persisted classes with metamodel disabled and all other classes with metamodel enabled) is not feasible either.  The split persistence unit approach would also split transaction boundaries of operations that are desired to be in a single transaction.
> Hibernate should support "any" mappings in the metamodel.  The @Any annotation is supported in Hibernate Annotation 3.5.5.
> If Hibernate can not support "any" mappings then maybe it could:
> * Allow the exclusion of persistent classes by package in the metamodel.  I tried this successfully by changing the following code in org.hibernate.ejb.EntityManagerFactoryImpl constructor:
> {noFormat}
> ...
> List<PersistentClass> persistentClasses = new ArrayList<PersistentClass>();
> while (classes.hasNext()) {
>     PersistentClass persistentClass = classes.next();
>     // Hardcode jBPM classes for now, but make tidy with a property like "hibernate.ejb.metamodel.excluded.pkgs"
>     if (persistentClass.getClassName().startsWith("org.jbpm")) {
>        continue;
>     } else {
>        persistentClasses.add(persistentClass);
>     }
> }
> // a safe guard till we are confident that metamodel is wll tested
> if (!"disabled".equalsIgnoreCase(cfg.getProperty("hibernate.ejb.metamodel.generation"))) {
>     this.metamodel = MetamodelImpl.buildMetamodel(persistentClasses.iterator(),
>             (SessionFactoryImplementor) sessionFactory);}
> ...
> {noFormat}
> * Exclude persistent classes having "any" mappings from the metamodel generation.  

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list