[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