How to add two entities home in the same page?
fredbene Mar 7, 2007 11:44 AMHello,
I have my page that I want to add a person and his phone.
I would like to know what I need to do when I call my #{personHome.persist} save my #{personHome.instance.name} , #{personHome.instance.age} WITH #{phoneHome.instance.number} as you can see in my page.
<ui:define name="body">
 <h:messages/>
 <center>
 <h:outputText value="Add new Person"
 rendered="#{!personHome.managed}"/>
 </center>
 <h:form id="person">
 <s:validateAll>
 <h:panelGrid columns="2">
 <h:outputLabel for="name">
 Name:
 </h:outputLabel>
 <s:decorate id="nameDecorator">
 <h:inputText value="#{personHome.instance.name}" required="true"/>
 </s:decorate>
 <h:outputLabel for="age">
 Age:
 </h:outputLabel>
 <s:decorate id="ageDecorator">
 <h:inputText value="#{personHome.instance.age}" required="true"/>
 </s:decorate>
 <h:outputLabel for="house">
 Phone:
 </h:outputLabel>
 <s:decorate id="numberDecorator">
 <h:inputText value="#{phoneHome.instance.number}"/>
 </s:decorate>
 </h:panelGrid>
 </s:validateAll>
 <center>
 <h:commandButton action="#{personHome.persist}" value="Save"/>
 <h:commandButton action="#{personHome.remove}" value="Delete"/>
 </center>
 </h:form>
</ui:define>
My PersonHome
@Name("personHome")
public class PersonHome extends EntityHome<Person> {
 public void setPersonId(Integer id) {
 setId(id);
 }
 public Integer getPersonId() {
 return (Integer)getId();
 }
 @Override
 protected Person createInstance() {
 Person person = new Person();
 return person;
 }
}
My phoneHome
@Name("phoneHome")
public class PhoneHome extends EntityHome<Phone> {
 public void setPhoneId(Integer id) {
 setId(id);
 }
 public Integer getPhoneId() {
 return (Integer)getId();
 }
 @Override
 protected Phone createInstance() {
 Phone phone = new Phone();
 return phone;
 }
}
And how is mappend my Person and Phone
Person:
@OneToMany(mappedBy="owner", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
 public List<Phone> getPhones() {
 return phones;
 }
 public void setPhones(List<Phone> phones) {
 this.phones = phones;
 }
Phones
@ManyToOne(fetch=FetchType.LAZY)
 @JoinColumn(name="person_id", nullable=false)
 public Person getowner() {
 return owner;
 }
 public void setOwner(Person owner) {
 this.owner = owner;
 }
Thank you,
Frederico
 
    