hibreate映射List集合,如何获取List集合中的值

时间:2022-04-09 19:45:14

public class Stock implements java.io.Serializable {

// Fields

private Integer stockId;
private Commodity commodity;
private StockAdd stockAdd;
private Integer stockNum;



public class Commodity implements java.io.Serializable {

// Fields

private Integer commodityId;
private CommodityType commodityType;
private String commodityName;
private String commodityCoding;
private String commodityNewCoding;
private Float commodityPrice;
private String commodityPicture;
private List stocks = new ArrayList();
private List sells = new ArrayList();


action类中获得了

List sellList = new ArrayList();
String selectFlag = request.getParameter("selectFlag");
int commodityId = 0;
Commodity comm = new Commodity();
if (selectFlag != null && selectFlag.trim() != "") {
commodityId = Integer.parseInt(selectFlag);
}
comm = icbiz.findById(commodityId);
 sellList = comm.getStocks();
 for(int i = 0;i<sellList.size();i++){
 sellList.get(i);
 }
request.setAttribute("sellList", sellList);
request.getSession().setAttribute("comm", comm);
return mapping.findForward("sell_edit");

请问我如何在页面中输出stock类中的stockNum的值呢

6 个解决方案

#1


在线等待啊,求各位大虾帮忙解决下了。谢谢了

#2


来个大虾帮忙解决下啦。谢谢了

#3


映射类
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.MyApl.entity.Stock" table="stock" schema="dbo" catalog="merchandiseControl">
        <id name="stockId" type="java.lang.Integer">
            <column name="stock_id" />
            <generator class="native" />
        </id>
        <many-to-one name="commodity" class="com.MyApl.entity.Commodity" fetch="select" lazy="false">
            <column name="commodity_id" not-null="true" />
        </many-to-one>
        <many-to-one name="stockAdd" class="com.MyApl.entity.StockAdd" fetch="select" lazy="false">
            <column name="stockAdd_id" not-null="true" />
        </many-to-one>
        <property name="stockNum" type="java.lang.Integer">
            <column name="stock_num" not-null="true" />
        </property>
    </class>
</hibernate-mapping>


我现在修改了一下,但是出现这个问题。我的映射类也加了lazy为什么还是不行呢?

public ActionForward addSell(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws UnsupportedEncodingException {
List sellList = new ArrayList();
String selectFlag = request.getParameter("selectFlag");
int commodityId = 0;
Commodity comm = new Commodity();
if (selectFlag != null && selectFlag.trim() != "") {
commodityId = Integer.parseInt(selectFlag);
}
comm = icbiz.findById(commodityId);
sellList = comm.getStocks();
int se = sellList.size();      //在这里报错。
request.setAttribute("sellList", sellList);
request.getSession().setAttribute("comm", comm);
return mapping.findForward("sell_edit");
}


错误:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.MyApl.entity.Commodity.stocks, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
at org.hibernate.collection.PersistentList.size(PersistentList.java:91)
at com.MyApl.struts.action.SellAction.addSell(SellAction.java:244)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2013-02-26 18:56:45,734 [org.apache.struts.action.RequestProcessor]-[WARN] Unhandled Exception thrown: class org.hibernate.LazyInitializationException
2013-02-26 18:56:45,734 [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/managementSystem].[action]]-[ERROR] Servlet.service() for servlet action threw exception
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.MyApl.entity.Commodity.stocks, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
at org.hibernate.collection.PersistentList.size(PersistentList.java:91)
at com.MyApl.struts.action.SellAction.addSell(SellAction.java:244)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)

映射类

#4



//添加泛型,
private List<Stock> stocks = new ArrayList<Stock>();

页面可以使用struts标签或者C标签迭代即可。C标签如下:
<c:forEach var="stock" items="${comm }">
${stock.stockNum }
</c:forEach>

#5


页面可以使用struts标签或者C标签迭代即可。C标签如下:
<c:forEach var="stock" items="${comm.stocks }">
${stock.stockNum }
</c:forEach>

#6


failed to lazily initialize a collection of role: com.MyApl.entity.Commodity.stocks, no session or session was closed
现在又出现这个错误。我在网上查了。说修改映射文件中的lazy=“false” 但是我改了还是没反应啊

#1


在线等待啊,求各位大虾帮忙解决下了。谢谢了

#2


来个大虾帮忙解决下啦。谢谢了

#3


映射类
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.MyApl.entity.Stock" table="stock" schema="dbo" catalog="merchandiseControl">
        <id name="stockId" type="java.lang.Integer">
            <column name="stock_id" />
            <generator class="native" />
        </id>
        <many-to-one name="commodity" class="com.MyApl.entity.Commodity" fetch="select" lazy="false">
            <column name="commodity_id" not-null="true" />
        </many-to-one>
        <many-to-one name="stockAdd" class="com.MyApl.entity.StockAdd" fetch="select" lazy="false">
            <column name="stockAdd_id" not-null="true" />
        </many-to-one>
        <property name="stockNum" type="java.lang.Integer">
            <column name="stock_num" not-null="true" />
        </property>
    </class>
</hibernate-mapping>


我现在修改了一下,但是出现这个问题。我的映射类也加了lazy为什么还是不行呢?

public ActionForward addSell(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws UnsupportedEncodingException {
List sellList = new ArrayList();
String selectFlag = request.getParameter("selectFlag");
int commodityId = 0;
Commodity comm = new Commodity();
if (selectFlag != null && selectFlag.trim() != "") {
commodityId = Integer.parseInt(selectFlag);
}
comm = icbiz.findById(commodityId);
sellList = comm.getStocks();
int se = sellList.size();      //在这里报错。
request.setAttribute("sellList", sellList);
request.getSession().setAttribute("comm", comm);
return mapping.findForward("sell_edit");
}


错误:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.MyApl.entity.Commodity.stocks, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
at org.hibernate.collection.PersistentList.size(PersistentList.java:91)
at com.MyApl.struts.action.SellAction.addSell(SellAction.java:244)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2013-02-26 18:56:45,734 [org.apache.struts.action.RequestProcessor]-[WARN] Unhandled Exception thrown: class org.hibernate.LazyInitializationException
2013-02-26 18:56:45,734 [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/managementSystem].[action]]-[ERROR] Servlet.service() for servlet action threw exception
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.MyApl.entity.Commodity.stocks, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
at org.hibernate.collection.PersistentList.size(PersistentList.java:91)
at com.MyApl.struts.action.SellAction.addSell(SellAction.java:244)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)

映射类

#4



//添加泛型,
private List<Stock> stocks = new ArrayList<Stock>();

页面可以使用struts标签或者C标签迭代即可。C标签如下:
<c:forEach var="stock" items="${comm }">
${stock.stockNum }
</c:forEach>

#5


页面可以使用struts标签或者C标签迭代即可。C标签如下:
<c:forEach var="stock" items="${comm.stocks }">
${stock.stockNum }
</c:forEach>

#6


failed to lazily initialize a collection of role: com.MyApl.entity.Commodity.stocks, no session or session was closed
现在又出现这个错误。我在网上查了。说修改映射文件中的lazy=“false” 但是我改了还是没反应啊