[hibernate-issues] [Hibernate-JIRA] Commented: (ANN-467) Inheritence of Embedded objects (@Embeddable)

Jean Paul Ebejer (JIRA) noreply at atlassian.com
Wed Oct 18 18:51:25 EDT 2006


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

Jean Paul Ebejer commented on ANN-467:
--------------------------------------


Thank you Emanuel for posting me in the right direction :) 
(Am awaiting your reply - not here though - this is strange)

http://forum.hibernate.org/viewtopic.php?t=966129&highlight=

do you want a postcard from MLT ?

> Inheritence of Embedded objects (@Embeddable) 
> ----------------------------------------------
>
>          Key: ANN-467
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-467
>      Project: Hibernate Annotations
>         Type: Bug

>  Environment: JBoss 4.0.4, MYSQL 5.0.18, Java JDK 1.5.0_06
>     Reporter: Jean Paul Ebejer

>
>
> Hi there @Hibernate (must be a pretty often repeated joke in here...)
> I have an @Embeddable object AllocationId which extends another @Embeddable
> object (GenericId).  AllocationId, is simply a marker class and has NO attributes in it,
> while all attributes (String id; which I want to persist) are in GenericId (inherited in AllocationId).  
> I get the following exception:
> org.hibernate.AnnotationException: com.xxx.yyy.AllocationId has no persistent id property
>         at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1714)
>         at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1171)
>         at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:706)
>         at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:452)
>         at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:268)
>         at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1039)
>         at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1207)
>         at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154)
>         at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:844)
>         at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:382)
>         at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:126)
>         at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:264)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.ejb3.ServiceDelegateWrapper.startService(ServiceDelegateWrapper.java:102)
>         at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
>         at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
>         at sun.reflect.GeneratedMethodAccessor144.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> Any Ideas ?
> Code snippets as follow:
> @Embeddable
> public final class AllocationId extends GenericId {
>    // ... serial UID here - removed as considered somewhat sensitive ...
>     /**
>      * @param id
>      */
>     public AllocationId(final String id) {
>         super(id);
>     }
> }
> @Embeddable
> public abstract class GenericId implements Serializable {
>     /**
>      * The actual Id
>      */    
>     protected String id;  // THIS IS NOT BEING 'SEEN' AS INSIDE AllocationId
>     /**
>      * Constructor to create a generic Id. 
>      * Syntactic checks are performed here (not null and empty string)
>      * 
>      * @param allocationId The allocation Id
>      */
>     protected GenericId(final String id) {
>         validate(id);
>         this.id = id;
>     }
>     /**
>      * Performs syntactic checking of the generic id
>      * 
>      * @param id may not be null or empty ""
>      */
>     private void validate(final String id) throws IllegalArgumentException {
>         if (id == null) {
>             throw new IllegalArgumentException("id cannot be null");
>         }
>         if (id.trim().length() == 0) {
>             throw new IllegalArgumentException("id cannot be length 0");
>         }
>     }
>     /**
>      * @return the id
>      */
>     public String getId() {
>         return this.id;
>     }
>     @Override
>     public String toString() {
>         return getId();
>     }
>     // some less interesting code here .equals overrides etc.
> }
> Let me know.
> Many Thanks - for your attention and for your GREAT product,
> Malta (MT).

-- 
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