@AttributeOverrides gives me exception [message #665600] |
Fri, 15 April 2011 04:40  |
Eclipse User |
|
|
|
Hello
I'm in the process of updating my JPA libraries, and I'm getting a new error.
I have the following scenario (I tried to simplify it to the best)
@Entity
@DiscriminatorValue(value="0")
public class B extends A
{
private C otherInstance = new C();
public B() {}
@Embedded
@AttributeOverrides({
@AttributeOverride(name="field1", column=@Column(name="B_FIELD_1")),
@AttributeOverride(name="field2", column=@Column(name="B_FIELD_2"))
})
public C getOtherInstance()
{
return otherInstance;
}
public void setOtherInstance(C otherInstance)
{
this.otherInstance = otherInstance;
}
}
@Entity
@Inheritance(strategy= InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE",
discriminatorType=DiscriminatorType.INTEGER, length=1)
@Table(name="MY_TABLE")
public abstract class A implements Serializable
{
private C cInstance = new C();
@Embedded
@AttributeOverrides({
@AttributeOverride(name="field1", column=@Column(name="A_FIELD_1")),
@AttributeOverride(name="field2", column=@Column(name="A_FIELD_2"))
})
public C getCInstance()
{
return cInstance;
}
public void setCInstance(C cInstance)
{
this.cInstance = cInstance;
}
}
@Embeddable
public class C
{
private int field1;
private int field2;
public C() {}
public int getField1()
{
return field1;
}
public void setField1(int field1)
{
this.field1 = field1;
}
public int getField2()
{
return field2;
}
public void setField2(int field2)
{
this.field2 = field2;
}
}
But when I try to do a simple query I get the following exception
#|2011-04-15T09:43:22.224+0200|WARNING|glassfish3.1|org.ecli pse.persistence.session.file:/F:/glassfish3/glassfish/domain s/domain1/applications/Application_jar|_ThreadID=30;_ThreadN ame=Thread-1;|
Local Exception Stack:
Exception [EclipseLink-27] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Trying to invoke the method [getField1] on the object [B]. The number of actual and formal parameters differs, or an unwrapping conversion has failed.
Internal Exception: java.lang.IllegalArgumentException: object is not an instance of declaring class
Mapping: org.eclipse.persistence.mappings.DirectToFieldMapping[field1-->MY_TABLE.B_FIELD_1]
Descriptor: RelationalDescriptor(my.package.C --> [DatabaseTable(MY_TABLE)])
at org.eclipse.persistence.exceptions.DescriptorException.illeg alArgumentWhileGettingValueThruMethodAccessor(DescriptorExce ption.java:654)
at org.eclipse.persistence.internal.descriptors.MethodAttribute Accessor.getAttributeValueFromObject(MethodAttributeAccessor .java:85)
at org.eclipse.persistence.internal.descriptors.MethodAttribute Accessor.getAttributeValueFromObject(MethodAttributeAccessor .java:61)
at org.eclipse.persistence.mappings.DatabaseMapping.getAttribut eValueFromObject(DatabaseMapping.java:523)
at org.eclipse.persistence.mappings.foundation.AbstractDirectMa pping.valueFromRow(AbstractDirectMapping.java:1273)
at org.eclipse.persistence.mappings.DatabaseMapping.readFromRow IntoObject(DatabaseMapping.java:1325)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildAttributesIntoObject(ObjectBuilder.java:344)
at org.eclipse.persistence.mappings.AggregateObjectMapping.buil dAggregateFromRow(AggregateObjectMapping.java:362)
at org.eclipse.persistence.mappings.AggregateObjectMapping.read FromRowIntoObject(AggregateObjectMapping.java:1415)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildAttributesIntoObject(ObjectBuilder.java:344)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildProtectedObject(ObjectBuilder.java:821)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildObject(ObjectBuilder.java:657)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildWorkingCopyCloneNormally(ObjectBuilder.java:612)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildObjectInUnitOfWork(ObjectBuilder.java:565)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildObject(ObjectBuilder.java:497)
at org.eclipse.persistence.internal.descriptors.ObjectBuilder.b uildObject(ObjectBuilder.java:456)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.buildOb ject(ObjectLevelReadQuery.java:723)
at org.eclipse.persistence.queries.ReadAllQuery.registerResultI nUnitOfWork(ReadAllQuery.java:742)
at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLe velReadQuery(ReadAllQuery.java:423)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute DatabaseQuery(ObjectLevelReadQuery.java:1080)
at org.eclipse.persistence.queries.DatabaseQuery.execute(Databa seQuery.java:808)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute (ObjectLevelReadQuery.java:1040)
at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAll Query.java:383)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute InUnitOfWork(ObjectLevelReadQuery.java:1126)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.int ernalExecuteQuery(UnitOfWorkImpl.java:2842)
at org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1521)
at org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1503)
at org.eclipse.persistence.internal.sessions.AbstractSession.ex ecuteQuery(AbstractSession.java:1477)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.executeRea dQuery(EJBQueryImpl.java:484)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getResultL ist(EJBQueryImpl.java:741)
at com.sun.enterprise.container.common.impl.QueryWrapper.getRes ultList(QueryWrapper.java:195)
...
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce ssorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe thodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.persistence.internal.descriptors.MethodAttribute Accessor.getAttributeValueFromObject(MethodAttributeAccessor .java:82)
... 141 more
Any ideas? It was working on previous versions (2.0.1.v20100213-r6600)
Thanks
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.05315 seconds