【发布时间】:2016-03-31 06:35:09
【问题描述】:
我有 2 个 POJO。
一个配置文件类,其中:id、name、messages(消息列表)映射为一对多关系。
具有 id、消息、配置文件的消息类(与 ManyToOne 映射)
个人资料类
@XmlRootElement
@Entity
@Table(name="Profile")
public class Profile {
@Id
@GeneratedValue
@Column(name="profile_id")
private int id;
private String name;
@OneToMany(mappedBy="profile")
private List<Message> messages = new ArrayList<Message>();
消息类
@XmlRootElement
@Entity
@Table(name="Message")
public class Message {
@Id
@GeneratedValue
private int id;
private String message;
@ManyToOne
@JoinColumn(name="profile_id")
private Profile profile;
发布方式
@POST
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public Profile test(){
Profile profile = new Profile(1,"John");
Message message = new Message("Hello World!");
Session session = sessionFactory.openSession();
session.beginTransaction();
profile.getMessages().add(message);
session.save(profile);
message.setProfile(profile);
session.save(message);
session.getTransaction().commit();
session.close();
return profile;
}
当我在 Chrome 中通过 Postman 发出请求时,我收到“500 Internal Server Error”。
奇怪的是它在我的数据库中插入。它正确地完成了它(它使用外键将消息映射到配置文件),但它似乎无法将响应作为 Json 返回。
如果我不保存消息(使用 session.save(message),它会返回正确的响应,但不再映射它。
如何使用一对多关系获得 Json 响应?
【问题讨论】:
-
第一步:检查您的服务器日志/控制台,并阅读错误堆栈跟踪。
-
控制台没有错误。我只在 Postman 中看到 500 内部服务器错误
-
你在 HTTP 响应中也没有错误吗?如果是这样,首先要做的是改进日志记录。看不到错误会阻止您进行任何分析。
-
我刚刚看到邮递员也给了我这个:“格式错误的 JSON:意外'
-
我会首先确保您可以返回一个简单的对象作为 JSON。排除你的 test() 产生错误的东西,或者你错误地使用 PostMan。然后重新添加关系并从那里进行调试。
标签: java json hibernate rest jersey