0 Replies Latest reply on Feb 28, 2007 6:50 PM by atao

    seam-gen : two attributes of same kind in an entity

    atao

      Hello,

      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;
       }
      
      }