Get-method JAX-RS没有为Lis​​t找到MessageBodyWriter

时间:2016-03-11 13:43:24

标签: java mysql hibernate jax-rs

当我们访问URI时,例如localhost:8080 / QuizProject / webapi / questions,我们收到500内部服务器错误。
没有特定的错误消息,数据库接收并获取信息,我们知道这是由于System.out.println

使用id检索所有问题或特定问题的两种方法。

@Path("/questions")
public class QuestionResource {

    private QuestionService questionService = new QuestionService();

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Question> getAllQuestions()
{
    return questionService.getAllQuestions();
}

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/{questionId}")
public Question getQuestion(@PathParam("questionId") int id)
    {
        return questionService.getQuestion(id);
    }
}

使用hibernate-methods的类

package home.neshoz.Quiz222.services;

import java.util.Collection;
import java.util.List;
import java.util.Set;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import home.neshoz.Quiz222.HibernateTools.HibernateUtil;
import home.neshoz.Quiz222.model.Answer;
import home.neshoz.Quiz222.model.Question;

public class QuestionService
{
    private SessionFactory sessionFactory;
    private Session session;

public List<Question> getAllQuestions()
{
    sessionFactory = HibernateUtil.getSessionFactory();
    session = sessionFactory.openSession();
    session.beginTransaction();

    List<Question> questionList = session.createCriteria(Question.class).list();

    session.getTransaction().commit();

    return questionList;

}

public Question getQuestion(int id)
{
    sessionFactory = HibernateUtil.getSessionFactory();
    session = sessionFactory.openSession();
    session.beginTransaction();

    Question question = (Question)session.get(Question.class, id);
    Collection<Answer> answerList = question.getAnswerList();
    for(Answer a : answerList)
    {
        System.out.println(a.getAnswer());
    }

    session.getTransaction().commit();
    session.close();

    return question;
}

public Question addQuestion(Question question)
{
    sessionFactory = HibernateUtil.getSessionFactory();
    session = sessionFactory.openSession();
    session.beginTransaction();

    session.save(question);
    session.getTransaction().commit();
    session.close();

    return question;
}

public Question editQuestion(int id, String updatedQuestion)
{
    sessionFactory = HibernateUtil.getSessionFactory();
    session = sessionFactory.openSession();
    session.beginTransaction();

    Question question = (Question)session.get(Question.class, id);
    question.setQuestion(updatedQuestion);

    session.update(question);
    session.getTransaction().commit();
    session.close();

    return question;
}

public Question deleteQuestion(int id)
{
    sessionFactory = HibernateUtil.getSessionFactory();
    session = sessionFactory.openSession();
    session.beginTransaction();

    Question question = (Question)session.get(Question.class, id);

    session.delete(question);
    session.getTransaction().commit();
    session.close();

    return question;
}
}

问题类

package home.neshoz.Quiz222.model;

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

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
@Entity
@Table(name = "Questions")
public class Question implements Serializable
{
    @Id
    @GeneratedValue
    @Column(name = "Id")
    private int id;

    private String question;

    @OneToMany(targetEntity = Answer.class, mappedBy = "question", cascade =   CascadeType.ALL, fetch = FetchType.EAGER)
    private Set<Answer> answerList = new HashSet<Answer>();

    public Question()
    {

    }
    public Question(String question)
    {
        this.question = question;
    }
    public int getId()
    {
        return id;
    }
    public void setId(int id)
    {
        this.id = id;
    }
    public String getQuestion()
    {
        return question;
    }
    public void setQuestion(String question)
    {
        this.question = question;
    }
    public Set<Answer> getAnswerList()
    {
        return answerList;
    }
    public void setAnswerList(Set<Answer> answerList)
    {
        this.answerList = answerList;
    }
}

答案级

package home.neshoz.Quiz222.model;

import java.io.Serializable; 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "Answers")
public class Answer implements Serializable
{
    @Id
    @GeneratedValue
    @Column(name = "Id")
    private int id;

    @Column(name = "Answer")
    private String answer;

    @Column(name = "correctAnswer")
    private String correctAnswer;

    @ManyToOne
    @JoinColumn(name = "Questions_Id")
    private Question question;

    public Answer()
    {

    }
    public Answer(String answer)
    {
        this.answer = answer;
    }

    public Question getQuestion()
    {
        return question;
    }

     public void setQuestion(Question question)
     {
        this.question = question;
    }

    public int getAnswerId()
    {
        return id;
    }
    public void setAnswerId(int answerId)
    {
        this.id = answerId;
    }
    public String getAnswer()
    {
        return answer;
    }
    public void setAnswer(String answer)
    {
        this.answer = answer;
    }
    public String getCorrectAnswer()
    {
        return correctAnswer;
    }
    public void setCorrectAnswer(String correctAnswer)
    {
        this.correctAnswer = correctAnswer;
    }
}

主级。

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import home.neshoz.Quiz222.HibernateTools.HibernateUtil;
import home.neshoz.Quiz222.model.Answer;
import home.neshoz.Quiz222.model.Question;

public class HibernateInsertDemo
{
    private static SessionFactory sessionFactory;
    private static Session session;

    public static void main(String[] args)
    {
        Question q = new Question("F1");

        Answer a1 = new Answer("A1");
        Answer a2 = new Answer("A2");

        q.getAnswerList().add(a1);
        q.getAnswerList().add(a2);

        a1.setQuestion(q);
        a2.setQuestion(q);

        sessionFactory = HibernateUtil.getSessionFactory();
        session = sessionFactory.openSession();
        session.beginTransaction();

        session.save(q);

        session.getTransaction().commit();
        session.close();
    }
}

0 个答案:

没有答案