Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用hibernate和ajax请求读取表_Java_Mysql_Ajax_Hibernate_Servlets - Fatal编程技术网

Java 如何使用hibernate和ajax请求读取表

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

我有以下代码从数据库中检索数据。我在wildfly和MySQL服务器上运行

下面的代码段应返回所有可用的用户组

@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>();