We want to write a simple applications where users can store contacts. In this section we create the data model of our application. For this we need two classes annotated with JPA Annotations: User and Contact. In the src/main/java/net/sf/jpasecurity folder we create the subfolders contacts/model. Within the created folder we create two files named User.java and Contact.java:
package net.sf.jpasecurity.contacts.model;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Basic
private String name;
public User() {
}
public User(String name) {
setName(name);
}
public int getId() {
return id;
}
protected void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean equals(Object object) {
if (!(object instanceof User)) {
return false;
}
User user = (User)object;
return getName().equals(user.getName());
}
public int hashCode() {
return getName().hashCode();
}
}
package net.sf.jpasecurity.contacts.model;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Contact {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@ManyToOne
private User owner;
@Basic
private String text;
public Contact() {
}
public Contact(User owner, String text) {
setOwner(owner);
setText(text);
}
public int getId() {
return id;
}
protected void setId(int id) {
this.id = id;
}
public User getOwner() {
return owner;
}
public void setOwner(User owner) {
this.owner = owner;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public boolean equals(Object object) {
if (!(object instanceof Contact)) {
return false;
}
Contact contact = (Contact)object;
return getOwner().equals(contact.getOwner()) && getText().equals(contact.getText());
}
public int hashCode() {
return getOwner().hashCode() ^ getText().hashCode();
}
}
The code for these entities is also available in the jpasecurity-0.4.0-tests.jar. If you have built this jar from the source-distribution you may provide it within your pom.xml via the following snippet and you don't have to write the classes yourself.
<dependency>
<groupId>net.sf.jpasecurity</groupId>
<artifactId>jpasecurity</artifactId>
<version>0.4.0</version>
<classifier>tests</classifier>
</dependency>