Java 如何使用hibernate和ajax请求读取表
我有以下代码从数据库中检索数据。我在wildfly和MySQL服务器上运行 下面的代码段应返回所有可用的用户组Java 如何使用hibernate和ajax请求读取表,java,mysql,ajax,hibernate,servlets,Java,Mysql,Ajax,Hibernate,Servlets,我有以下代码从数据库中检索数据。我在wildfly和MySQL服务器上运行 下面的代码段应返回所有可用的用户组 @WebServlet(urlPatterns = {"/groups_list"}) public class UserGroupList extends HttpServlet { /** * Get all users groups available * @param request * @param response
@WebServlet(urlPatterns = {"/groups_list"})
public class UserGroupList extends HttpServlet {
/**
* Get all users groups available
* @param request
* @param response
* @throws IOException
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
Session session = HibernateHelper.getSessionFactory().openSession();
List<UserGroup> userGroups= session.createQuery("FROM UserGroup UG").getResultList();
ObjectMapper objectMapper = new ObjectMapper();
try {
String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(userGroups);
response.getWriter().println(json);
} catch(Exception e) {
response.getWriter().println(e.getMessage());
}
}
}
@WebServlet(urlPatterns = {"/users_list"})
public class UsersList extends HttpServlet {
/**
* Get all users available
* @param request
* @param response
* @throws IOException
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
Session session = HibernateHelper.getSessionFactory().openSession();
List<User> users = session.createQuery("FROM User s").getResultList();
ObjectMapper objectMapper = new ObjectMapper();
try {
String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(users);
response.getWriter().println(json);
} catch(Exception e) {
response.getWriter().println(e.getMessage());
}
}
}
我的用户实体显示为:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="user_id")
private int id;
@Embedded
private Person person;
@Column(columnDefinition = "VARCHAR(255)")
private String image;
@ManyToOne
@JoinColumn(name="user_group_id", nullable = false, referencedColumnName = "user_group_id")
private UserGroup userGroup;
我的用户组实体:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="user_group_id")
private int id;
@NotNull
@Column(nullable = false, columnDefinition = "VARCHAR(20)")
private String name;
@NotNull
@Column(nullable = false, columnDefinition = "TEXT")
private String permission;
@OneToMany(mappedBy="userGroup",
cascade={CascadeType.PERSIST, CascadeType.MERGE},
fetch = FetchType.LAZY)
private List<User> users = new ArrayList<User>();
原因可能是您没有真正向客户端返回任何错误,原因是
catch(Exception e) {
e.printStackTrace();
}
此外,如果打开了Hibernate会话,则必须在final
块中将其关闭
Jackson在将实体转换为JSON时无限处理User->UserGroup->User
您可以使用附加的Jackson注释修复此问题
我建议您更改您的型号:
UserGroup
是表格数据,因此您不必将用户存储在那里。
只需从UserGroup
private List<User> users = new ArrayList<User>();
private List users=new ArrayList();
我已将异常包含在抛出的
catch(Exception e) {
e.printStackTrace();
}
private List<User> users = new ArrayList<User>();