derived identifier of derived identifier [message #683888] |
Tue, 14 June 2011 11:42  |
Eclipse User |
|
|
|
Hi
I am using glassfish 3.1 b40 and according to what i see in glassh logs i am using
"Eclipse Persistence Services - 2.2.0.v20110114-r8831"
In my scenario i want to create an entity with 2 references to other entities, and having PK being a composite id of FK. The problem i got is when one of these references entities has a derived identifier as well (shared primary key).
To clarify, pls take a look at sample:
@Entity
public class Auction implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private Long id;
}
@Entity
public class Dealer {
@Id
private Long id;
@OneToOne(cascade = CascadeType.ALL)
@MapsId
private AppUser user;
@Entity
public class AppUser{
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long userName;
}
@Entity
@IdClass(AuctionObserverPK.class)
public class AuctionObserver implements Serializable{
@Id
@ManyToOne
private Auction auction;
@Id
@ManyToOne
private Dealer user;
}
public class AuctionObserverPK implements Serializable{
private Long auction;
private Long user;
}
So, i have a problem with mapping AuctionObserver- during deploy of my application i got:
Caused by: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.2.0.v20110114-r8831): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [Car4uPU] failed.
Internal Exception: java.lang.ClassCastException: org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.IdAccessor cannot be cast to org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ObjectAccessor
at org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:210)
... 28 more
Caused by: java.lang.ClassCastException: org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.IdAccessor cannot be cast to org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ObjectAccessor
at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ObjectAccessor.processId(ObjectAccessor.java:444)
at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ObjectAccessor.processOwningMappingKeys(ObjectAccessor.java:659)
at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ManyToOneAccessor.process(ManyToOneAccessor.java:110)
at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ClassAccessor.processDerivedId(ClassAccessor.java:1409)
at org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor.processDerivedId(EntityAccessor.java:823)
at org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processAccessorsWithDerivedIDs(MetadataProject.java:1294)
at org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processStage3(MetadataProject.java:1560)
at org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:486)
at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:454)
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1081)
... 27 more
If i change type of user property of AuctionObserver from Dealer to User application deploys with no problems.
Any ideas, pls.
|
|
|
|
|
Re: (no subject) [message #684922 is a reply to message #683979] |
Thu, 16 June 2011 09:33  |
Eclipse User |
|
|
|
Please log a bug for the exception, you should at a minimum get a better error message. Also try the 2.3 release, the issue may have been fixed.
Remove the @MapsId, I don't think you should have that, Dealer should not have an id, just the @OneToOne to AppUser also marked as @Id. If you want both, then set one to insertable/updateable=false or use a @PrimaryKeyJoinColumn.
|
|
|
Powered by
FUDForum. Page generated in 0.06262 seconds