1 Reply Latest reply on Sep 30, 2005 8:24 AM by Yevgen Bushuyev

    ClassCastException in ParameterizedTypeImpl

    Yevgen Bushuyev Newbie

      Hi.
      I got

      java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
      at sun.reflect.annotation.AnnotationParser.toClass(AnnotationParser.java:360)
      at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:353)
      at sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:335)
      at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:264)
      at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:206)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
      at java.lang.reflect.Field.declaredAnnotations(Field.java:1002)
      at java.lang.reflect.Field.getAnnotation(Field.java:989)
      at java.lang.reflect.AccessibleObject.isAnnotationPresent(AccessibleObject.java:175)
      at org.hibernate.cfg.AnnotationBinder.addAnnotatedElement(AnnotationBinder.java:831)
      at org.hibernate.cfg.AnnotationBinder.addElementsOfAClass(AnnotationBinder.java:814)
      at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:638)
      at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:256)
      at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:191)
      at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:970)
      at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:607)
      at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:75)
      at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:473)
      at org.hibernate.ejb.Ejb3Configuration.createContainerEntityManagerFactory(Ejb3Configuration.java:202)
      at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:78)
      at org.jboss.ejb3.Ejb3Deployment.initializeManagedEntityManagerFactory(Ejb3Deployment.java:512)

      when trying to deploy the bean

      package test.ejb3.beans;
      
      import java.io.Serializable;
      import java.lang.annotation.ElementType;
      import java.lang.annotation.Retention;
      import java.lang.annotation.RetentionPolicy;
      import java.lang.annotation.Target;
      
      import javax.persistence.AccessType;
      import javax.persistence.Entity;
      import javax.persistence.GeneratorType;
      import javax.persistence.Id;
      
      @Entity(access=AccessType.FIELD)
      public class Entity1<T extends Entity1> implements Serializable{
      
       @Retention(RetentionPolicy.RUNTIME)
       @Target(ElementType.FIELD)
       public @interface Anno {
       Class<? extends Intf> value();
       }
      
       @Anno(Inner.class)
       private String name;
      
       public interface Intf {
      
       }
      
       public class Inner implements Intf{
      
       }
      
       public static void main(String[] args) throws SecurityException, NoSuchFieldException {
       Entity1.class.getDeclaredField("name").getAnnotation(Anno.class);
       System.out.println("Ok");
       }
      
       private static final long serialVersionUID = -8975907644508940951L;
      
       @Id(generate = GeneratorType.AUTO)
       private int id;
      
      }
      


      The exception disappears if type variable T is removed. Any ideas why this happens?

      wbe, eugen.