Person.java

package ejava.examples.asyncmarket.bo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;

import javax.persistence.*;

@Entity @Table(name="ASYNCMARKET_BIDDER")
@NamedQueries({
    @NamedQuery(name="AsyncMarket_getAllPeople", 
            query="select p from Person p"),
    @NamedQuery(name="AsyncMarket_getPersonByUserId", 
                query="select p from Person p " +
                        "where p.userId=:userId")
})
public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;
    
    @Version
    private long version;
    
    @Column(length=32, nullable=false, unique=true, updatable=false)
    private String userId;
    
    @Column(length=32)
    private String name;
    
    @OneToMany(mappedBy="bidder",
               fetch=FetchType.LAZY,
               cascade={CascadeType.PERSIST,
                        CascadeType.REMOVE})
    private Collection<Bid> bids = new ArrayList<>();
    
    @OneToMany(mappedBy="owner", 
               fetch=FetchType.LAZY,
               cascade={CascadeType.PERSIST,
                        CascadeType.REMOVE})
    private Collection<AuctionItem> items = new ArrayList<>();
    
    public Person() {}
    public Person(long id) { setId(id); }

    public long getId() {
        return id;
    }
    private void setId(long id) {
        this.id = id;
    }
    
    public long getVersion() {
        return version;
    }
    public void setVersion(long version) {
        this.version = version;
    }

    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public Collection<Bid> getBids() {
        return bids;
    }
    public void setBids(Collection<Bid> bids) {
        this.bids = bids;
    }
    
    public Collection<AuctionItem> getItems() {
        return items;
    }
    public void setItems(Collection<AuctionItem> items) {
        this.items = items;
    }
    
    public String toString() {
        StringBuilder text = new StringBuilder();
        text.append("id=" + id);
        text.append(", version=" + version);
        text.append(", userId=" + userId);
        text.append(", name=" + name);
        text.append(", bids(" + bids.size() + ")");
        text.append(", items(" + items.size() + ")");
        return text.toString();
    }
}