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();
	}
}