Account.java
package ejava.projects.esales.bo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
* This is an example eSales Account class. It will use full JPA annotations
* to define the mappings to the database. We could have also used an orm.xml
* file supplied by the DAO.
*
*/
@SuppressWarnings("serial")
@Entity @Table(name="ESALES_ACCT")
public class Account implements Serializable {
@Id @Column(name="USER_ID", length=20)
private String userId;
@Column(name="FIRST_NAME", length=20)
private String firstName;
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="ESALES_ACCT_ADDRESS_LINK",
joinColumns=@JoinColumn(name="USER_ID"),
inverseJoinColumns=@JoinColumn(name="ADDRESS_ID"))
private List<Address> addresses = new ArrayList<Address>();
public Account() {} //JPA requires a no-arg ctor
public Account(String userId) {
setUserId(userId);
}
public Account(String userId, String firstName, List<Address> addresses) {
setUserId(userId);
this.firstName = firstName;
this.addresses = addresses;
}
public String getUserId() {
return userId;
}
private void setUserId(String userId) {
this.userId = userId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public List<Address> getAddresses() {
return addresses;
}
public void setAddresses(List<Address> addresses) {
this.addresses = addresses;
}
public String toString() {
StringBuilder text = new StringBuilder();
text.append("userId=" + userId);
text.append(", firstName=" + firstName);
text.append(", addresses={");
for (Address a : addresses) {
text.append("{" + a + "}, ");
}
text.append("}");
return text.toString();
}
}