[jboss-user] [JBoss Seam] - New User Lazy Load Question

clerum do-not-reply at jboss.com
Tue Sep 11 21:47:30 EDT 2007


Hello.

I'm just getting my start in the seam framework. I've used the seam-gen to setup the base of my project. 

I have a basic site up where new users and register and login. What I'm trying to add now is the ability for users to add phone numbers to their account. I want to have the ability to have multiple phone number records per user (mobile, office, home, etc) thus it's set as a OneToMany


  | @Entity
  | @Name("user")
  | @Scope(SESSION)
  | public class User implements Serializable
  | {
  | 	
  | 	private static final long serialVersionUID = -5311104884213351414L;
  | 	private long id;
  | 	private String username;
  | 	private String password;
  | 	private String firstname;
  | 	private String lastname;
  | 	private List <Phone> phones;
  | 	
  | 	public User() {}
  | 
  | 	@Id @GeneratedValue
  | 	public long getId()
  | 	{
  | 		return id;
  | 	}
  | 	
  | 	public void setId(long id)
  | 	{
  | 		this.id = id;
  | 	}
  | 	
  | 	
  | 	@Length(min=5, max=50)
  | 	public String getUsername()
  | 	{
  | 		return username;
  | 	}
  | 	public void setUsername(String username)
  | 	{
  | 		this.username = username;
  | 	}
  |    
  | 	public String toString() 
  | 	{
  | 		return "User(" + username + ")";
  | 	}
  | 
  | 	@NotNull
  | 	@Length(min=5, max=15)
  | 	public String getPassword()
  | 	{
  | 		return password;
  | 	}
  | 
  | 	public void setPassword(String password)
  | 	{
  | 		this.password = password;
  | 	}
  |   
  | 	@NotNull
  | 	@Length(max=100)
  | 	public String getFirstname()
  | 	{
  | 		return firstname;
  | 	}
  | 	public void setFirstname(String firstname)
  | 	{
  | 		this.firstname = firstname;
  | 	}
  | 
  | 	@NotNull
  | 	@Length(max=100)
  | 	public String getLastname()
  | 	{
  | 		return lastname;
  | 	}
  | 	public void setLastname(String lastname)
  | 	{
  | 		this.lastname = lastname;
  | 	}
  | 	
  | 	@OneToMany(mappedBy="user")
  | 	public List <Phone> getPhones() {
  | 		return phones;
  | 	}
  | 
  | 	public void setPhones(List <Phone> phones) {
  | 		this.phones = phones;
  | 	}
  | 
  | 
  | }
  | 

  | @Entity
  | @Name("phone")
  | @Scope(SESSION)
  | public class Phone implements Serializable 
  | {
  | 
  | 	private static final long serialVersionUID = -8926240091475742891L;
  | 	
  | 	private long id;
  | 	private String name;
  | 	private String number;
  | 	private User user;
  | 	
  | 	public Phone () {}
  | 	
  | 	@Id @GeneratedValue
  | 	public long getId()
  | 	{
  | 		return id;
  | 	}
  | 	
  | 	public void setId(long id)
  | 	{
  | 		this.id = id;
  | 	}
  | 	@NotNull 
  | 	@Length(min=2, max=15)
  | 	public String getName()
  | 	{
  | 		return name;
  | 	}
  | 	
  | 	public void setName(String name)
  | 	{
  | 		this.name = name;
  | 	}
  | 	@NotNull 
  | 	@Length(min=10, max=50)
  | 	public String getNumber()
  | 	{
  | 		return number;
  | 	}
  | 	
  | 	public void setNumber(String number)
  | 	{
  | 		this.number = number;
  | 	}
  | 	
  | 	@ManyToOne
  | 	public User getUser()
  | 	{
  | 		return user;
  | 	}
  | 	
  | 	public void setUser(User user)
  | 	{
  | 		this.user = user;
  | 	}
  | }
  | 

What I'm trying to get working is just a list of the current logged in users phone records.

  | <f:subview id="phones"
  |            rendered="#{!empty(phones)}">
  | <p>You have the following Phone Numbers Stored:</p>
  | <h:dataTable value="#{user.phones}" var="id">
  |   <h:column>
  |     <h:outputText value="#{phones.number}"/>
  |   </h:column>
  | </h:dataTable>
  | </f:subview>

I'm guessing it's something thats wrong in my ui code, but I don't see any examples that have simple mapped tables. Can someone point me in the right direction? How would I call and present the List of phones from my page?

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4083237#4083237

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4083237



More information about the jboss-user mailing list