seam-gen : two attributes of same kind in an entity
atao Feb 28, 2007 6:50 PMHello,
I use seam-gen (seam 1.1.7.RC1) to generate list and home classes from entities with jpaconfiguration .
One class, Contract, has two attributs, seller and purchaser, with the same type Party.
The generated ContractHome class contains:
@In(value = "#{partyHome.managedInstance}", required = false) Party seller; @In(value = "#{partyHome.managedInstance}", required = false) Party purchaser;
So seller and purchaser use the same instance!
Any idea to get two different instances?
Regards
Pierre
PJ :
@Name("contract") @javax.persistence.Entity public class Contract extends Entity { private DateTime begin; private DateTime end; private Party seller; private Party purchaser; public Contract() { this(null); } public Contract(Party seller) { this(seller, null); } public Contract(Party seller, Party purchaser) { super(); this.seller = seller; this.purchaser = purchaser; } @Id public String getId() {return super.getId();} public void setId(String id) {super.setId(id);} /** * the seller */ @ManyToOne @JoinColumn(name="sellerId") public Party getSeller() {return this.seller;} public void setSeller(Party seller) {this.seller = seller;} public Contract seller(Party seller) { setSeller(seller); return this; } /** * the purchaser */ @ManyToOne @JoinColumn(name="purchaserId") public Party getPurchaser() {return this.purchaser;} public void setPurchaser(Party purchaser) {this.purchaser = purchaser;} public Contract purchaser(Party purchaser) { setPurchaser(purchaser); return this; } /** * the begin date */ @Column(name="begindate") @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime") public DateTime getBegin() {return this.begin;} public void setBegin(DateTime begin) {this.begin = begin;} public Contract begin(DateTime begin) { setBegin(begin); return this; } /** * the end date */ @Column(name="enddate") @Type(type="org.joda.time.contrib.hibernate.PersistentDateTime") public DateTime getEnd() {return this.end;} public void setEnd(DateTime end) {this.end = end;} public Contract end(DateTime end) { setEnd(end); return this; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Contract(" + getPurchaser().getName() + " [" + getBegin() + " - " + getEnd() + " ])"; } }
@Name("contractHome") public class ContractHome extends EntityHome<Contract> { @In(value = "#{partyHome.managedInstance}", required = false) Party seller; @In(value = "#{partyHome.managedInstance}", required = false) Party purchaser; public void setContractId(String id) { setId(id); } public String getContractId() { return (String) getId(); } @Override protected Contract createInstance() { Contract contract = new Contract(); return contract; } public void wire() { if (seller != null) { getInstance().setSeller(seller); } if (purchaser != null) { getInstance().setPurchaser(purchaser); } } public boolean isWired() { return true; } public Contract getManagedInstance() { return isManaged() ? getInstance() : null; } }