Thanks for getting back,
Here is the Person POJO
@Entity
@Table(name="TPerson")
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Person {
private Collection <Car> drives = new ArrayList();
protected ClassInstanceEmbPK pk; // 3009
public void setPk(ClassInstanceEmbPK pk){
this.pk = pk;
}
@EmbeddedId
public ClassInstanceEmbPK getPk() {
return pk;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("Person is, ");
sb.append(this.getPk());
return sb.toString();
}
@ManyToMany
@JoinTable(name="RPERSONCARDRIVES", joinColumns={@JoinColumn(name="C_FROM", referencedColumnName="C"),
@JoinColumn(name="I_FROM", referencedColumnName="I")},
inverseJoinColumns={@JoinColumn(name="C_TO", referencedColumnName="C", unique=false),
@JoinColumn(name="I_TO", referencedColumnName="I", unique=false)})
public Collection<Car> getDrives() {
return drives;
}
public void setDrives(Collection<Car> drives){
this.drives = drives;
}
}
Here is the ClassInstance embedded key,
@Embeddable
public class ClassInstanceEmbPK implements Comparable, Serializable {
private int c;
private int i;
public static int counter = 0;
public ClassInstanceEmbPK() {
}
public ClassInstanceEmbPK(int c, int i) {
this.c = c;
this.i = i;
}
public int getC() {
return c;
}
public void setC(int c){
this.c = c;
}
public int getI() {
return i;
}
public void setI(int i){
this.i = i;
}
public boolean equals(Object obj){
if (obj == this) return true;
if (!(obj instanceof ClassInstancePK)) return false;
ClassInstanceEmbPK ciPK = (ClassInstanceEmbPK)obj;
if ((ciPK.c == this.c) && (ciPK.i == this.i)){
return true;
} return false;
}
public int hashCode() {
return c + i;
}
public int compareTo(Object o) {
ClassInstanceEmbPK pk = (ClassInstanceEmbPK)o;
if (this.c > pk.c)
return 1;
else if (this.c < pk.c)
return -1;
// Check IndexIds
else if (this.i < pk.i)
return -1;
else if (this.i > pk.i)
return 1;
else
return 0;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("C=" + c);
sb.append(",I="+ i);
return sb.toString();
}
}
|