Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hi,
I am having this code in Order.java(bean)
private List lineItems = new ArrayList();
public void setLineItems(List lineItems) {
logger.info("In Order.setLineItems:::: "+lineItems);
this.lineItems = lineItems;
}
public List getLineItems() {
logger.info("In Order.getLineItems:::: "+lineItems);
return lineItems;
}
But In orders table I do not have anything like lineItems
But i have lineitem table which consists of orderid,linenum,itemid,quantity,unitprice fields.
This is my lineItem.java.
package org.springframework.samples.jpetstore.domain;
import java.io.Serializable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class LineItem implements Serializable {
/* Private Fields */
private int orderId;
private int lineNumber;
private int quantity;
private String itemId;
private double unitPrice;
private Item item;
protected final Log logger=LogFactory.getLog(getClass());
/* Constructors */
public LineItem() {
}
public LineItem(int lineNumber, CartItem cartItem) {
this.lineNumber = lineNumber;
this.quantity = cartItem.getQuantity();
this.itemId = cartItem.getItem().getItemId();
this.unitPrice = cartItem.getItem().getListPrice();
this.item = cartItem.getItem();
}
/* JavaBeans Properties */
public int getOrderId() {
logger.info("In LineItem.getOrderId:::: ");
return orderId;
}
public void setOrderId(int orderId) {
logger.info("In LineItem.setOrderId:::: ");
this.orderId = orderId;
}
public int getLineNumber() {
logger.info("In LineItem.getLineNumber:::: ");
return lineNumber;
}
public void setLineNumber(int lineNumber) {
logger.info("In LineItem.setLineNumber:::: ");
this.lineNumber = lineNumber;
}
public String getItemId() {
logger.info("In LineItem.getItemId:::: ");
return itemId;
}
public void setItemId(String itemId) {
logger.info("In LineItem.setItemId:::: ");
this.itemId = itemId;
}
public double getUnitPrice() {
logger.info("In LineItem.getUnitPrice:::: ");
return unitPrice;
}
public void setUnitPrice(double unitprice) {
logger.info("In LineItem.setUnitPrice:::: ");
this.unitPrice = unitprice;
}
public Item getItem() {
logger.info("In LineItem.getItem:::: ");
return item;
}
public void setItem(Item item) {
logger.info("In LineItem.setItem:::: ");
this.item = item;
}
public int getQuantity() {
logger.info("In LineItem.getQuantity:::: ");
return quantity;
}
public void setQuantity(int quantity) {
logger.info("In LineItem.setQuantity:::: "+quantity);
this.quantity = quantity;
}
public double getTotalPrice() {
logger.info("In LineItem.getTotalPrice:::: ");
return this.unitPrice * this.quantity;
}
}
Hibernate version:
using with spring 1.2.2
Mapping documents:
<class name="org.springframework.samples.jpetstore.domain.Order" table="orders" lazy="false" >
<id name="orderId" type="integer" unsaved-value="null" >
<column name="orderid" sql-type="integer" not-null="true"/>
<generator class="uuid.hex"/>
</id>
<one-to-one name="username" class="org.springframework.samples.jpetstore.domain.Account" />
<property name="orderDate" column="orderdate"/>
<property name="shipAddress1" column="shipaddr1"/>
<property name="shipAddress2" column="shipaddr2"/>
<property name="shipCity" column="shipcity"/>
<property name="shipState" column="shipstate"/>
<property name="shipZip" column="shipzip"/>
<property name="shipCountry" column="shipcountry"/>
<property name="billAddress1" column="billaddr1"/>
<property name="billAddress2" column="billaddr2"/>
<property name="billCity" column="billcity"/>
<property name="billState" column="billstate"/>
<property name="billZip" column="billzip"/>
<property name="billCountry" column="billcountry"/>
<property name="courier" />
<property name="totalPrice" />
<property name="billToFirstName" column="billtofirstname"/>
<property name="billToLastName" column="billtolastname"/>
<property name="shipToFirstName" column="shiptofirstname"/>
<property name="shipToLastName" column="shiptolastname"/>
<property name="creditCard" column="creditcard"/>
<property name="expiryDate" column="exprdate"/>
<property name="cardType" column="cardtype"/>
<property name="locale"/>
<one-to-one name="status" class="org.springframework.samples.jpetstore.domain.Account"/>
<!--<list name="lineItems" table="lineitem">
<key column="orderid"/>
<list-index column="linenum"/>
</list>
-->
<list name="lineitems" inverse="true" lazy="true">
<key>
<column name="orderid" />
</key>
<one-to-many class="org.springframework.samples.jpetstore.domain.LineItem" />
</list>
</class>
<class name="org.springframework.samples.jpetstore.domain.LineItem" table="lineitem" lazy="false">
<composite-id>
<key-property name="orderId" column="orderid"/>
<key-property name="lineNumber" column="linenum"/>
</composite-id>
<property name="item" column="itemid" not-null="true"/>
<property name="quantity" column="quantity"/>
<!--<one-to-one name="quantity" class="org.springframework.samples.jpetstore.domain.CartItem"/>-->
<property name="unitPrice" column="unitprice" not-null="true"/>
</class>
Code between sessionFactory.openSession() and session.close():
using springs getHibernate Template()
Full stack trace of any exception that occurs:
Mar 7, 2006 9:17:12 AM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-9080
Mar 7, 2006 9:17:12 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 984 ms
Mar 7, 2006 9:17:12 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Mar 7, 2006 9:17:12 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.9
Mar 7, 2006 9:17:12 AM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
Mar 7, 2006 9:17:13 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive jpetstore.war
Mar 7, 2006 9:17:13 AM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization started
Mar 7, 2006 9:17:13 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/dataAccessContext-local.xml]
Mar 7, 2006 9:17:14 AM org.springframework.core.CollectionFactory <clinit>
INFO: JDK 1.4+ collections available
Mar 7, 2006 9:17:14 AM org.springframework.core.CollectionFactory <clinit>
INFO: Commons Collections 3.x available
Mar 7, 2006 9:17:14 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext-hibernate.xml]
Mar 7, 2006 9:17:14 AM org.springframework.context.support.AbstractRefreshableApplicationContext refreshBeanFactory
INFO: Bean factory for application context [Root WebApplicationContext]: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [propertyConfigurer,sessionFactory,transactionManager,dataSource,accountDao,categoryDao,productDao,itemDao,orderDao,accountValidator,orderValidator,petStore,petstore:service=hibernateStatistics,jmxExporter]; root of BeanFactory hierarchy
Mar 7, 2006 9:17:14 AM org.springframework.context.support.AbstractApplicationContext refresh
INFO: 14 beans defined in application context [Root WebApplicationContext]
Mar 7, 2006 9:17:14 AM org.springframework.beans.factory.support.AbstractBeanFactory getBean
INFO: Creating shared instance of singleton bean 'propertyConfigurer'
Mar 7, 2006 9:17:14 AM org.springframework.core.io.support.PropertiesLoaderSupport loadProperties
INFO: Loading properties file from ServletContext resource [/WEB-INF/jdbc.properties]
Mar 7, 2006 9:17:14 AM org.springframework.context.support.AbstractApplicationContext initMessageSource
INFO: Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@d0220c]
Mar 7, 2006 9:17:14 AM org.springframework.context.support.AbstractApplicationContext initApplicationEventMulticaster
INFO: Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@1a19458]
Mar 7, 2006 9:17:14 AM org.springframework.ui.context.support.UiApplicationContextUtils initThemeSource
INFO: No ThemeSource found for [Root WebApplicationContext]: using ResourceBundleThemeSource
Mar 7, 2006 9:17:14 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [propertyConfigurer,sessionFactory,transactionManager,dataSource,accountDao,categoryDao,productDao,itemDao,orderDao,accountValidator,orderValidator,petStore,petstore:service=hibernateStatistics,jmxExporter]; root of BeanFactory hierarchy]
Mar 7, 2006 9:17:14 AM org.springframework.beans.factory.support.AbstractBeanFactory getBean
INFO: Creating shared instance of singleton bean 'sessionFactory'
Mar 7, 2006 9:17:14 AM org.springframework.beans.factory.support.AbstractBeanFactory getBean
INFO: Creating shared instance of singleton bean 'dataSource'
Mar 7, 2006 9:17:14 AM org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.0.4
Mar 7, 2006 9:17:14 AM org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
Mar 7, 2006 9:17:14 AM org.hibernate.cfg.Environment <clinit>
INFO: using CGLIB reflection optimizer
Mar 7, 2006 9:17:14 AM org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
Mar 7, 2006 9:17:14 AM org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: XML InputStream(141) The content of element type "list" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)".
Mar 7, 2006 9:17:14 AM org.springframework.beans.factory.support.AbstractBeanFactory destroySingletons
INFO: Destroying singletons in factory {org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [propertyConfigurer,sessionFactory,transactionManager,dataSource,accountDao,categoryDao,productDao,itemDao,orderDao,accountValidator,orderValidator,petStore,petstore:service=hibernateStatistics,jmxExporter]; root of BeanFactory hierarchy}
Mar 7, 2006 9:17:14 AM org.springframework.web.context.ContextLoader initWebApplicationContext
SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/dataAccessContext-local.xml]: Initialization of bean failed; nested exception is org.hibernate.MappingException: invalid mapping
org.hibernate.MappingException: invalid mapping
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:399)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:623)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:966)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:358)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:226)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:147)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:270)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:312)
at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:230)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:156)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:48)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3669)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4104)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:788)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:677)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:473)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1102)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1020)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:683)
at org.apache.catalina.startup.Catalina.start(Catalina.java:537)
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.catalina.startup.Bootstrap.start(Bootstrap.java:271)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:409)
Caused by: org.xml.sax.SAXParseException: The content of element type "list" must match "(meta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-update?,sql-delete?,sql-delete-all?,filter*)".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:172)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:382)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2048)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:932)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:713)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:398)
... 35 more
Mar 7, 2006 9:17:15 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Mar 7, 2006 9:17:15 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/jpetstore] startup failed due to previous errors
Mar 7, 2006 9:17:16 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-9080
Mar 7, 2006 9:17:16 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:9009
Mar 7, 2006 9:17:16 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/47 config=null
Mar 7, 2006 9:17:16 AM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Mar 7, 2006 9:17:16 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3860 ms
Name and version of the database you are using:
mysql 4.0
The generated SQL (show_sql=true):
hbm does not get loaded.
Debug level Hibernate log excerpt:
The problem starts when I added this code in the hbm.xml
<list name="lineItems" inverse="true" lazy="true" cascade="all">
<key>
<column name="orderid" />
</key>
<one-to-many class="org.springframework.samples.jpetstore.domain.LineItem" />
</list>
I am trying to use hibernate through spring.
Can anybody help me here how the relationship should be or where I am getting wrong???
Regards,
Avinash