Customer.java

package ejava.jpa.examples.query;

import javax.persistence.*;

@Entity 
@Table(name="JPAQL_CUSTOMER")
@NamedQueries({
    @NamedQuery(name="Customer.getCustomersByName",
            query="select c from Customer c " +
                    "where c.firstName like :first AND c.lastName like :last"),
    @NamedQuery(name="Customer.getCustomerPurchases",
            query="select s from Sale s " +
                    "where s.buyerId=:custId")
})
/* issues compiling this with hibernate3-plugin
@NamedNativeQueries({
	@NamedNativeQuery(name="Customer.getCustomerRows", 
			query="select * from JPAQL_CUSTOMER c " +
                  "where c.FIRST_NAME = ?1")
})
*/
public class Customer {
    @Id @GeneratedValue 
    @Column(name="CUSTOMER_ID")    
    private long id;
    
    @Column(name="FIRST_NAME", length=16, nullable=true)
    private String firstName;
    
    @Column(name="LAST_NAME", length=16, nullable=true)
    private String lastName;
    
    public long getId() { return id; }

    public String getFirstName() { return firstName; }
    public Customer setFirstName(String firstName) {
        this.firstName = firstName;
        return this;
    }
    
    public String getLastName() { return lastName; }
    public Customer setLastName(String lastName) {
        this.lastName = lastName;
        return this;
    }
    
    public String toString() {
        StringBuilder text = new StringBuilder();
        text.append("firstName=" + firstName);
        text.append(", lastName=" + lastName);
        return text.toString();
    }
}