mapping problem: entity as join table [message #386050] |
Thu, 19 March 2009 20:56 |
andiqo Messages: 32 Registered: July 2009 |
Member |
|
|
Dear all,
I have a problem with my mapping... Help appreciated.
** In Java:
@Entity
public class Node implements ICopyable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private long id;
@ManyToMany(mappedBy = "to", fetch = FetchType.LAZY, cascade =
CascadeType.ALL)
// No orphanRemoval here => see preRemove method
private Set<Edge> inputs = new HashSet<Edge>();
@ManyToMany(mappedBy = "from", fetch = FetchType.LAZY, cascade =
CascadeType.ALL)
// No orphanRemoval here => see preRemove method
private Set<Edge> outputs = new HashSet<Edge>();
}
@Entity
public class Edge {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private long id;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinColumn(name = "FROM_ID", nullable = false, updatable = false)
private Node from;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
@JoinColumn(name = "TO_ID", nullable = false, updatable = false)
private Node to;
}
** In SQL (PostgresQL)
CREATE TABLE EDGE (ID BIGSERIAL NOT NULL, TO_ID BIGINT NOT NULL, FROM_ID
BIGINT NOT NULL, PRIMARY KEY (ID));
CREATE TABLE NODE (ID BIGSERIAL NOT NULL, PRIMARY KEY (ID));
** Result:
Exception Description: An incompatible mapping has been encountered
between [class org.jenmo.core.domain.Node] and [class
org.jenmo.core.domain.Edge]. This usually occurs when the cardinality of a
mapping does not correspond with the cardinality of its backpointer.
at
org.eclipse.persistence.exceptions.ValidationException.inval idMapping(ValidationException.java:1183)
at
org.eclipse.persistence.internal.jpa.metadata.accessors.mapp ings.ManyToManyAccessor.process(ManyToManyAccessor.java:115)
at
org.eclipse.persistence.internal.jpa.metadata.accessors.mapp ings.RelationshipAccessor.processRelationship(RelationshipAc cessor.java:404)
at
org.eclipse.persistence.internal.jpa.metadata.MetadataProjec t.processRelationshipAccessors(MetadataProject.java:845)
at
org.eclipse.persistence.internal.jpa.metadata.MetadataProjec t.processStage2(MetadataProject.java:738)
at
org.eclipse.persistence.internal.jpa.metadata.MetadataProces sor.processORMMetadata(MetadataProcessor.java:442)
at
org.eclipse.persistence.internal.jpa.deployment.PersistenceU nitProcessor.processORMetadata(PersistenceUnitProcessor.java :297)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl. predeploy(EntityManagerSetupImpl.java:834)
Thanks a lot for your help.
andiqo
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.09607 seconds