Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 休眠连接结果集_Java_Database_Spring_Hibernate_Spring Mvc - Fatal编程技术网

Java 休眠连接结果集

Java 休眠连接结果集,java,database,spring,hibernate,spring-mvc,Java,Database,Spring,Hibernate,Spring Mvc,我在使用Hibernate和SpringMVC时遇到了一个问题,即,如果我运行一个包含连接的查询,我会得到一个没有任何细节的500错误,有人能帮我吗 表2为: 用户: 以及控制器类方法: @Transactional @RequestMapping(value = "/", method = RequestMethod.GET) public @ResponseBody List<Project> home(Locale locale, Model model) { Se

我在使用Hibernate和SpringMVC时遇到了一个问题,即,如果我运行一个包含连接的查询,我会得到一个没有任何细节的500错误,有人能帮我吗

表2为:

用户:

以及控制器类方法:

@Transactional
@RequestMapping(value = "/", method = RequestMethod.GET)
public @ResponseBody  List<Project> home(Locale locale, Model model) {

    Session session=new Configuration().configure().buildSessionFactory().getCurrentSession();

    session.beginTransaction();
    List<Project> result = (List<Project>) session.createQuery("FROM projects p JOIN p.contentManager").getResultList();
    session.getTransaction().commit();
    session.close();

    return result;
}
浏览器屏幕截图: 试试这个:

List<?> list = (List<?>) session.createQuery("FROM Project p JOIN p.contentManager").list();
List<Project> result  =  new ArrayList<Project>();  
for(int i = 0; i < list.size(); i++) {
    Object[] row = (Object[]) list.get(i);
    Project p = (Project) row[0];
    User s = (User) row[1];
    p.setContentManager(s);
    result.add(p);
}
List List=(List)session.createQuery(“从项目p加入p.contentManager”).List();
列表结果=新建ArrayList();
对于(int i=0;i
您应该在不同的类中分离您的服务层,这是您获取未找到数据的方式,这是您应该管理的第一件事。您应该在这里放置一些来自tomcat控制台的堆栈跟踪,以便获得更具体的帮助。@statefi我刚刚修改了将控制台堆栈添加到您的实体名为
Project
,不是
项目
。我敢肯定,您添加到查询中的连接不会达到您所希望的效果。而且,最重要的是,阅读关于如何在Spring中集成JPA的Spring文档。您所做的完全错误。再次阅读Spring文档。您不应该创建配置:这是Spring的工作。您不应该创建SessionFactory:这是Spring的工作。在每次请求时创建一个新的是完全疯狂的:这是一个非常重的操作,必须执行一次,而且只能执行一次。您不应该开始并提交事务:这是Spring的工作。
@Transactional
@RequestMapping(value = "/", method = RequestMethod.GET)
public @ResponseBody  List<Project> home(Locale locale, Model model) {

    Session session=new Configuration().configure().buildSessionFactory().getCurrentSession();

    session.beginTransaction();
    List<Project> result = (List<Project>) session.createQuery("FROM projects p JOIN p.contentManager").getResultList();
    session.getTransaction().commit();
    session.close();

    return result;
}
WARN : org.hibernate.orm.connections.pooling - HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Hibernate: select project0_.id_project as id_proje1_0_0_, user1_.id_user as id_user1_1_1_, project0_.id_content_manager as id_conte4_0_0_, project0_.project_language as project_2_0_0_, project0_.project_name as project_3_0_0_, user1_.name as name2_1_1_, user1_.surname as surname3_1_1_ from projects project0_ inner join user user1_ on project0_.id_content_manager=user1_.id_user
List<?> list = (List<?>) session.createQuery("FROM Project p JOIN p.contentManager").list();
List<Project> result  =  new ArrayList<Project>();  
for(int i = 0; i < list.size(); i++) {
    Object[] row = (Object[]) list.get(i);
    Project p = (Project) row[0];
    User s = (User) row[1];
    p.setContentManager(s);
    result.add(p);
}