[jboss-user] [JBoss Seam] - Illegal use of mappedBy on both sides of the relationship: m
irVega
do-not-reply at jboss.com
Sun Mar 25 13:37:06 EDT 2007
I have used seam-gen's generate-entities on a simple schema I knocked up (using HSQLDB), whilst I learn the basics of SEAM, with a view to prototype a system that will run against a legacy database.
There is a many-to-many relationship between 2 tables A (the auto-generated PK is ID_) and B (the auto-generated PK is ID_) which is resolved by C which just holds the ids of A and B (as A_ID and B_ID, both columns constrained by foreign key constraints on tables A and B repectively). The schema is included below.
The generated entity A has a Set of Bs and the generated entity for B has a Set of As. All good.
When I deploy the app, using the generated ant script, I get
Illegal use of mappedBy on both sides of the relationship: m2m.B.as
(where the "as" in "B.as" is the plural of a).
There's probably something going on under the covers as I can't see anything obvious in the generated source code (see below), possibly to do with cascading deletes (?). Is this a known condition of the reverse-engineering process for many to many relationships (possibly in Hibernate rather than seam-gen)? Is there some setting that needs to be set to avoid this?
The schema looks like this
| CREATE MEMORY TABLE A(ID_ BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY)
| CREATE MEMORY TABLE B(ID_ BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY)
| CREATE MEMORY TABLE C(A_ID BIGINT NOT NULL,B_ID BIGINT NOT NULL,CONSTRAINT C_PK PRIMARY KEY(A_ID,B_ID),CONSTRAINT C_TO_A FOREIGN KEY(A_ID) REFERENCES A(ID_),CONSTRAINT C_TO_B FOREIGN KEY(B_ID) REFERENCES B(ID_))
|
The generated java source code:
A.java
| package m2m;
| // Generated 25-Mar-2007 18:15:55 by Hibernate Tools 3.2.0.b9
|
| import java.util.HashSet;
| import java.util.Set;
| import javax.persistence.CascadeType;
| import javax.persistence.Column;
| import javax.persistence.Entity;
| import javax.persistence.FetchType;
| import javax.persistence.Id;
| import javax.persistence.ManyToMany;
| import javax.persistence.Table;
| import org.hibernate.validator.NotNull;
|
| /**
| * A generated by hbm2java
| */
| @Entity
| @Table(name = "A", schema = "PUBLIC")
| public class A implements java.io.Serializable {
|
| private long id;
| private Set<B> bs = new HashSet<B>(0);
|
| public A() {
| }
|
| public A(long id) {
| this.id = id;
| }
| public A(long id, Set<B> bs) {
| this.id = id;
| this.bs = bs;
| }
|
| @Id
| @Column(name = "ID_", unique = true, nullable = false)
| @NotNull
| public long getId() {
| return this.id;
| }
|
| public void setId(long id) {
| this.id = id;
| }
| @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "as")
| public Set<B> getBs() {
| return this.bs;
| }
|
| public void setBs(Set<B> bs) {
| this.bs = bs;
| }
|
| }
|
B.java
|
| package m2m;
| // Generated 25-Mar-2007 18:15:55 by Hibernate Tools 3.2.0.b9
|
| import java.util.HashSet;
| import java.util.Set;
| import javax.persistence.CascadeType;
| import javax.persistence.Column;
| import javax.persistence.Entity;
| import javax.persistence.FetchType;
| import javax.persistence.Id;
| import javax.persistence.ManyToMany;
| import javax.persistence.Table;
| import org.hibernate.validator.NotNull;
|
| /**
| * B generated by hbm2java
| */
| @Entity
| @Table(name = "B", schema = "PUBLIC")
| public class B implements java.io.Serializable {
|
| private long id;
| private Set<A> as = new HashSet<A>(0);
|
| public B() {
| }
|
| public B(long id) {
| this.id = id;
| }
| public B(long id, Set<A> as) {
| this.id = id;
| this.as = as;
| }
|
| @Id
| @Column(name = "ID_", unique = true, nullable = false)
| @NotNull
| public long getId() {
| return this.id;
| }
|
| public void setId(long id) {
| this.id = id;
| }
| @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bs")
| public Set<A> getAs() {
| return this.as;
| }
|
| public void setAs(Set<A> as) {
| this.as = as;
| }
|
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4031419#4031419
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4031419
More information about the jboss-user
mailing list