[jboss-user] [JBoss Seam] - Re: SelectOneMenu and OneToMany Seam 2.0 setup
thinkblue
do-not-reply at jboss.com
Wed Oct 17 20:21:52 EDT 2007
Here is what I have so far:
Here is my xhtml file:
|
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
| <ui:composition xmlns="http://www.w3.org/1999/xhtml"
| xmlns:ui="http://java.sun.com/jsf/facelets"
| xmlns:h="http://java.sun.com/jsf/html"
| xmlns:f="http://java.sun.com/jsf/core"
| xmlns:s="http://jboss.com/products/seam/taglib"
| xmlns:a4j="http://richfaces.org/a4j"
| xmlns:rich="http://richfaces.org/rich"
| template="template.xhtml">
|
| <!-- content -->
|
| <ui:define name="content">
| <h:form>
| <div id="mainHeader"><h1>Project List</h1></div>
| <div id="mainContent">
| <div id="sectionHeader"><h2>About The Person</h2></div>
| <div id="projectLeftSide">
| <div id="entry">
| <label>Person Name:</label>
| <div class="input">
| <h:inputText id="personName" value="#{person.personName}" />
| </div>
| </div>
|
| <div id="entry">
| <label>Zip Code:</label>
| <div class="input">
| <h:selectOneMenu value="#{person.zipCodes}" id="zipCodes">
| <s:selectItems value="#{zipCodes.resultList}" var="zip" label="#{zip.zipcodeNumber}" />
| <s:convertEntity />
| </h:selectOneMenu>
| </div>
| </div>
| </div>
|
| <div id="buttonSection">
| <div class="button">
| <h:commandButton value="Add" action="#{thePerson.addNewPerson}"/>
| </div>
| <div class="button">
| <s:button id="cancelButton" value="Cancel" view="/main.xhtml" />
| </div>
| </div>
| </div>
| <div id="mainFooter"> </div>
| </h:form>
|
| </ui:define>
| </ui:composition>
|
|
In bold red is what I want to do, just don't know how the backend should be coded...
Here is my components.xml file:
| <?xml version="1.0" encoding="UTF-8"?>
| <components xmlns="http://jboss.com/products/seam/components"
| xmlns:core="http://jboss.com/products/seam/core"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xsi:schemaLocation=
| "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.0.xsd
|
| http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd">
|
| <core:init jndi-pattern="@jndiPattern@" debug="true"/>
|
| <core:manager conversation-timeout="120000"
| concurrent-request-timeout="500"
| conversation-id-parameter="cid"/>
|
|
| </components>
|
Here is my persistence.xml file:
| <?xml version="1.0" encoding="UTF-8"?>
| <persistence xmlns="http://java.sun.com/xml/ns/persistence"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
| version="1.0">
|
| <persistence-unit name="myDatabase">
| <provider>org.hibernate.ejb.HibernatePersistence</provider>
| <jta-data-source>java:/OracleDS</jta-data-source>
| <properties>
| <property name="hibernate.hbm2ddl.auto" value="none"/>
| </properties>
| </persistence-unit>
| </persistence>
|
Here is my main entity bean:
| package com.org.selectonemenu.entity;
|
| import javax.persistence.Column;
| import javax.persistence.Entity;
| import javax.persistence.FetchType;
| import javax.persistence.Id;
| import javax.persistence.JoinColumn;
| import javax.persistence.ManyToOne;
| import javax.persistence.Table;
|
| import org.jboss.seam.annotations.Name;
|
| @Entity
| @Name("person")
| @Table(name = "PERSON")
| public class Person implements java.io.Serializable {
|
| private long personId;
| private ZipCodes zipCodes;
| private String personName;
|
| public Person() {
| }
|
| public Person(long personId) {
| this.personId = personId;
| }
|
| public Person(long personId, ZipCodes zipCodes, String personName) {
| this.personId = personId;
| this.zipCodes = zipCodes;
| this.personName = personName;
| }
|
| @Id
| @Column(name = "PERSON_ID", unique = true, nullable = false, precision = 12, scale = 0)
| public long getPersonId() {
| return this.personId;
| }
|
| public void setPersonId(long personId) {
| this.personId = personId;
| }
|
| @ManyToOne(fetch = FetchType.LAZY)
| @JoinColumn(name = "ZIPCODE_ID")
| public ZipCodes getZipCodes() {
| return this.zipCodes;
| }
|
| public void setZipCodes(ZipCodes zipCodes) {
| this.zipCodes = zipCodes;
| }
|
| @Column(name = "PERSON_NAME", length = 100)
| public String getPersonName() {
| return this.personName;
| }
|
| public void setPersonName(String personName) {
| this.personName = personName;
| }
|
| }
|
Here is the lookup Entity Bean:
| package com.org.selectonemenu.entity;
|
| 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.OneToMany;
| import javax.persistence.Table;
|
| import org.jboss.seam.annotations.Name;
|
| @Entity
| @Name("zipcodes")
| @Table(name = "ZIP_CODES")
| public class ZipCodes implements java.io.Serializable {
|
| private long zipcodeId;
| private String zipcodeNumber;
| private Set<Person> persons = new HashSet<Person>(0);
|
| public ZipCodes() {
| }
|
| public ZipCodes(long zipcodeId) {
| this.zipcodeId = zipcodeId;
| }
|
| public ZipCodes(long zipcodeId, String zipcodeNumber, Set<Person> persons) {
| this.zipcodeId = zipcodeId;
| this.zipcodeNumber = zipcodeNumber;
| this.persons = persons;
| }
|
| @Id
| @Column(name = "ZIPCODE_ID", unique = true, nullable = false, precision = 12, scale = 0)
| public long getZipcodeId() {
| return this.zipcodeId;
| }
|
| public void setZipcodeId(long zipcodeId) {
| this.zipcodeId = zipcodeId;
| }
|
| @Column(name = "ZIPCODE_NUMBER", length = 50)
| public String getZipcodeNumber() {
| return this.zipcodeNumber;
| }
|
| public void setZipcodeNumber(String zipcodeNumber) {
| this.zipcodeNumber = zipcodeNumber;
| }
|
| @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "zipCodes")
| public Set<Person> getPersons() {
| return this.persons;
| }
|
| public void setPersons(Set<Person> persons) {
| this.persons = persons;
| }
|
| }
|
And finally here is my sfsb that I use to persist to the database:
| package com.org.selectonemenu.sfsb;
|
| import javax.ejb.Remove;
| import javax.ejb.Stateful;
| import javax.persistence.EntityManager;
| import javax.persistence.PersistenceContext;
|
| import org.jboss.seam.ScopeType;
| import org.jboss.seam.annotations.Destroy;
| import org.jboss.seam.annotations.In;
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.annotations.Out;
| import org.jboss.seam.annotations.Scope;
|
| import com.org.selectonemenu.entity.Person;
| import com.org.selectonemenu.interfaces.PersonMgr;
|
| @Stateful
| @Name("thePerson")
| @Scope(ScopeType.SESSION)
| public class PersonSFSB implements PersonMgr {
|
| @PersistenceContext
| private EntityManager entityManager;
|
| @In(required = false)
| @Out(required = false)
| private Person person;
|
|
| public void addNewPerson() {
| Person addPerson = person;
|
| addPerson.setZipCodes(person.getZipCodes());
| addPerson.setPersonName(person.getPersonName());
|
| entityManager.persist(addPerson);
|
| }
|
| @Destroy
| @Remove
| public void destroy() {
| }
| }
|
So out of these files what do I need to change and what files do I need to add...As I mentioned before I am using the latest Seam Snapshot...I'm on JBoss Server 4.2.1
Thank you for any help that anyone could provide to me.
Blue
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4096339#4096339
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4096339
More information about the jboss-user
mailing list