New User Lazy Load Question
clerum Sep 11, 2007 9:47 PMHello.
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?