【发布时间】:2016-10-24 04:13:39
【问题描述】:
我有 3 个表,Groupes、Assignements 和 Assignements_has_group,它们在前面的表之间进行链接(多对多关系)。 我想要做的是将idgroupes 放入Assignement_has_groupes 表中以获取idAssignements,然后能够通过它们的ID 加载assignements。
我已经从 Hibernate 生成了我的类和映射,它还没有创建类 Assignements_has_group 或 hbm.xml 文件,但这很正常。 我的问题是当我试图通过执行访问表来获取数据时
ArrayList<Integer> A = (Integer) session.createQuery("FROM Assignements_has_groupes WHERE Groupes_idGroupes="+"'"+id+"'").list();
我收到一条错误消息,指出未映射 Assignements_has_groupes。
所以我尝试通过本机 SQL 访问表,但我无法获得正确的结果集, 我的代码是:
ArrayList AS = new ArrayList<Integer>();
ResultSet AB= (ResultSet)session.createSQLQuery("SELECT * FROM assignements_has_table WHERE Groupes_idGroupes="+"'"+id+"'").list();
tx.commit();
int x=0;
while(AB.next()){
int c =(int)AB.getInt(x);
AS.add(c);
x++;
}
我无法将我的结果集正确放入 arrayList 哪种解决方案是最好的,怎么做?
编辑: 休眠配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydb</property>
<property name="hibernate.connection.username">root</property>
<property name="connection.password"></property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop the existing tables and create new one -->
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- Mention here all the model classes along with their package name -->
<!-- <mapping class="com.isep.metier.entities.Competences2"/> -->
<mapping resource="com/isep/metier/Users.hbm.xml"/>
<mapping resource="com/isep/metier/Absences.hbm.xml"/>
<mapping resource="com/isep/metier/Assignements.hbm.xml"/>
<mapping resource="com/isep/metier/Competences.hbm.xml"/>
<mapping resource="com/isep/metier/Competencesgrp.hbm.xml"/>
<mapping resource="com/isep/metier/Famillecompetences.hbm.xml"/>
<mapping resource="com/isep/metier/Famillecompetencesgrp.hbm.xml"/>
<mapping resource="com/isep/metier/Groupes.hbm.xml"/>
<mapping resource="com/isep/metier/Notes.hbm.xml"/>
<mapping resource="com/isep/metier/Remarques.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我最后想要的是一个 int idAssignement 的 ArrayList 以使我能够正确加载分配
目前完整的堆栈错误是:
Hibernate: SELECT * FROM assignements_has_groupes WHERE Groupes_idGroupes='1'
juin 22, 2016 12:16:57 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet GroupeEleve a généré une exception
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.sql.ResultSet
at com.isep.metier.AssignementsUtil.AssignementByGrp(AssignementsUtil.java:48)
at com.isep.controlleurs.GroupeEleve.doGet(GroupeEleve.java:49)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
【问题讨论】:
-
你能发布你的
entities吗?你的预期结果是什么?你得到了什么? -
你能显示你的休眠配置文件吗?
标签: java mysql hibernate jakarta-ee many-to-many