[jboss-jira] [JBoss JIRA] Created: (JBRULES-2522) JPAVariablePersister will not work when @Id is declared on a superclass

Julien Serdaru (JIRA) jira-events at lists.jboss.org
Wed May 26 18:45:55 EDT 2010


JPAVariablePersister will not work when @Id is declared on a superclass
-----------------------------------------------------------------------

                 Key: JBRULES-2522
                 URL: https://jira.jboss.org/browse/JBRULES-2522
             Project: Drools
          Issue Type: Bug
      Security Level: Public (Everyone can see)
    Affects Versions: 5.1.0.M1
            Reporter: Julien Serdaru
            Assignee: Mark Proctor


Given A and B:

@MappedSuperclass
public class A {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id = null;
}

@Entity
public class B extends A {
    // Some other fields
}

In JPAVariablePersister:getClassIdValue, a lookup is done on the entity fields to autodetect the @Id annotation, which fails in this case since the method uses getDeclaredFields() instead of getFields():

	private Long getClassIdValue(Object o) throws NoSuchMethodException,
			SecurityException, IllegalAccessException,
			InvocationTargetException, IllegalArgumentException {
		Field[] fields = o.getClass().getDeclaredFields();  <-- THIS ONLY RETURNS THE LOCAL FIELDS, NOT THE SUPERCLASS.
               ...
		return idValue;
	}


Replacing getDeclaredFields() by getFields() should fix the problem.


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

        


More information about the jboss-jira mailing list