I am trying to build a simple REST API with Jersey and Hibernate. The database that I am using is Neo4j.
Whenever I try to do a simple GET request, I get 500 error and I am not sure what I am doing wrong.
My project structure is like this:
Here is my Person class:
package com.topjavatutorial.dao;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="Person")
public class Person {
@Id @GeneratedValue
@Column(name="id")
private int id;
@Column(name="gender")
private String gender;
@Column(name="dob")
private String dob;
@Column(name="firstname")
private String firstname;
@Column(name="middlename")
private String middlename;
@Column(name="lastname")
private String lastname;
// getters and setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getMiddlename() {
return middlename;
}
public void setMiddlename(String middlename) {
this.middlename = middlename;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
}
My PersonDAO class looks like this:
package com.topjavatutorial.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import org.hibernate.HibernateException;
public class PersonDAO {
public Person getPerson(Integer id){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Person person = new Person();
try{
String query = "MATCH (p:Person {id:" + id + "}) "
+ "RETURN {id: p.id, "
+ "firstname: p.firstname, "
+ "middlename: p.middlename, "
+ "lastname: p.lastname, "
+ "dob: p.dob, "
+ "gender: p.gender}";
person = (Person) em.createNativeQuery(query).getResultList();
em.flush();
tx.commit();
em.clear();
em.close();
emf.close();
}
catch (HibernateException e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
}
return person;
}
}
and the MyResource class is like this:
package com.topjavatutorial;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import com.topjavatutorial.dao.Person;
import com.topjavatutorial.dao.PersonDAO;
@Path("/people")
public class MyResource {
@GET
@Produces("application/json")
public Person getPeople() {
PersonDAO person = new PersonDAO();
return person.getPerson(6);
}
}
So, whenever I run the application with the following url: http://localhost:8080/Neo4jAPI/
, I don't get any errors, but whenever I do http://localhost:8080/Neo4jAPI/webapi/people
, I get the 500 error.