These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Unknown column 'elt' in 'field list'
PostPosted: Sun Jun 28, 2009 8:06 am 
Newbie

Joined: Sun Jun 28, 2009 7:57 am
Posts: 2
I have an object "History" than insures that an enclosed list in the valid order and add some functionality. I am trying to map this object as a component which contains a bag. I am getting this bizarre error "Unknown column 'itemlist0_.elt' in 'field list'".

LOG
----
Code:
Hibernate: select this_.id as id2_0_, this_.username as username2_0_, this_.password as password2_0_, this_.account_type as account4_2_0_ from account this_ where this_.username=? and this_.password=?
Hibernate: select portfoliol0_.account_id as account4_1_, portfoliol0_.id as id1_, portfoliol0_.id as id0_0_, portfoliol0_.cash_transaction_last_update as cash2_0_0_, portfoliol0_.name as name0_0_, portfoliol0_.account_id as account4_0_0_ from portfolio portfoliol0_ where portfoliol0_.account_id=?
Hibernate: select itemlist0_.portfolio_id as portfolio4_0_, itemlist0_.elt as elt0_ from cash_transaction itemlist0_ where itemlist0_.portfolio_id=? order by date asc
15:08:08,530  WARN JDBCExceptionReporter:100 - SQL Error: 1054, SQLState: 42S22
15:08:08,566 ERROR JDBCExceptionReporter:101 - Unknown column 'itemlist0_.elt' in 'field list'
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract boolean ca.mcgill.learning.client.remoting.EISService.login(java.lang.String,java.lang.String)' threw an unexpected exception: org.hibernate.exception.SQLGrammarException: could not initialize a collection: [ca.mcgill.learning.client.object.Portfolio.cashTransactionHistory.itemList#1]
   at com.google.gwt.user.server.rpc.RPCCopy_GWT15.encodeResponseForFailure(RPCCopy_GWT15.java:348)
   at com.google.gwt.user.server.rpc.RPCCopy.encodeResponseForFailure(RPCCopy.java:212)
   at ca.mcgill.learning.server.remoting.mod.ModifiedPersistentRemoteService.processCall(ModifiedPersistentRemoteService.java:72)
   at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
   at com.google.gwt.dev.shell.GWTShellServlet.service(GWTShellServlet.java:289)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
   at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
   at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
   at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
   at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
   at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
   at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
   at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.exception.SQLGrammarException: could not initialize a collection: [ca.mcgill.learning.client.object.Portfolio.cashTransactionHistory.itemList#1]
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
   at org.hibernate.loader.Loader.loadCollection(Loader.java:2022)
   at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:59)
   at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:587)
   at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:83)
   at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1743)
   at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:366)
   at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
   at org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:272)
   at ca.mcgill.learning.server.EISServiceImpl.login(EISServiceImpl.java:176)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at com.google.gwt.user.server.rpc.RPCCopy_GWT15.invoke(RPCCopy_GWT15.java:563)
   at com.google.gwt.user.server.rpc.RPCCopy.invoke(RPCCopy.java:163)
   at ca.mcgill.learning.server.remoting.mod.ModifiedPersistentRemoteService.invokeMethod(ModifiedPersistentRemoteService.java:97)
   at ca.mcgill.learning.server.EISServiceImpl.invokeMethod(EISServiceImpl.java:95)
   at ca.mcgill.learning.server.remoting.mod.ModifiedPersistentRemoteService.processCall(ModifiedPersistentRemoteService.java:58)
   ... 29 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'itemlist0_.elt' in 'field list'
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
   at java.lang.reflect.Constructor.newInstance(Unknown Source)
   at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
   at com.mysql.jdbc.Util.getInstance(Util.java:381)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
   at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
   at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
   at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
   at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1912)
   at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
   at org.hibernate.loader.Loader.getResultSet(Loader.java:1808)
   at org.hibernate.loader.Loader.doQuery(Loader.java:697)
   at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
   at org.hibernate.loader.Loader.loadCollection(Loader.java:2015)
   ... 46 more


PORTFOLIO MAPPING
-------------------

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="ca.mcgill.learning.client.object">
   <class name="Portfolio" table="portfolio">
      <id name="id">
         <generator class="native"/>
      </id>
      
      <component name="cashTransactionHistory" class="History">
         <property name="lastUpdate" column="cash_transaction_last_update"/>
         <bag name="itemList" table="cash_transaction" order-by="date asc">
            <key column="portfolio_id"/>
            <element type="ca.mcgill.learning.client.object.CashTransaction"/>
         </bag>
      </component>
      
      <property name="name"/>
         
      <many-to-one name="ownerAccount" column="account_id"/>   
   
   </class>
</hibernate-mapping>


TABLES
---------
CREATE TABLE `portfolio` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`account_id` bigint(20) NOT NULL,
`portfolio_group_id` bigint(20) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`cash_transaction_last_update` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

******
CREATE TABLE `cash_transaction` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`portfolio_id` bigint(20) NOT NULL,
`date` datetime DEFAULT NULL,
`value` double NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

*********



PORTFOLIO CLASS
----------------
Code:
package ca.mcgill.learning.client.object;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Portfolio implements Serializable, Identifiable {

   /**
    *
    */
   private static final long serialVersionUID = 1L;
   
   private History<Transaction> transactionHistory = new History<Transaction>();
   private History<CashTransaction> cashTransactionHistory = new History<CashTransaction>();
   private Map<Security, History<Transaction>> securityTransactionMap = new HashMap<Security, History<Transaction>>();
   private String name = "";
   private Account ownerAccount;
   


   
   //TODO Transient???
   private transient InterestRateProvider interestRateProvider;
   
   private Map<Security, SecurityPosition> securityPositions = new HashMap<Security, SecurityPosition>();
   
   private PortfolioGroup portfolioGroup = null;
   private PortfolioRules portfolioRules = new PortfolioRules();
   
   private PortfolioPosition portfolioPosition = null;
   private Long id;
   
   public Long getId() {
      return id;
   }

   protected void setId(Long id) {
      this.id = id;
   }

   
   public Account getOwnerAccount() {
      return ownerAccount;
   }


   public void setOwnerAccount(Account ownerAccount) {
      this.ownerAccount = ownerAccount;
   }


   public synchronized void addTransation(Transaction transaction) {
      Security security = transaction.getSecurity();
      if(!transactionHistory.contains(transaction) && transaction.getSecurity()!=null) {
         transactionHistory.addItem(transaction);
         History<Transaction> securityTransactionHistory = securityTransactionMap.get(security);
         if(securityTransactionHistory == null) {
            securityTransactionHistory = new History<Transaction>();
            securityTransactionMap.put(security, securityTransactionHistory);
         }
         securityTransactionHistory.addItem(transaction);
      }
   }
   
   public synchronized History<Transaction> getTransactions(Security security) {
      History<Transaction> transactionHist = securityTransactionMap.get(security);
      if(transactionHist == null) {
         transactionHist = new History<Transaction>();
      }
      return transactionHist;
   }
   
   public synchronized History<Transaction> getTransactions() {
      return transactionHistory;
   }
   
   public synchronized List<Security> getSecurities() {
      return new ArrayList<Security>(securityTransactionMap.keySet());
   }


   public InterestRateProvider getInterestRateProvider() {
      return interestRateProvider;
   }


   public void setInterestRateProvider(InterestRateProvider interestRateProvider) {
      this.interestRateProvider = interestRateProvider;
   }
   
   public synchronized void setSecurityPosition(Security security, SecurityPosition securityPosition) {
      SecurityPosition registeredSecurityPosition = securityPositions.get(security);
      if(registeredSecurityPosition == null || !registeredSecurityPosition.getDate().after(securityPosition.getDate())) {
         securityPositions.put(security, securityPosition);
      }
   }
   
   public synchronized SecurityPosition getSecurityPosition(Security security) {
      return securityPositions.get(security);
   }

   public synchronized List<SecurityPosition> getSecurityPositionList() {
      return new ArrayList<SecurityPosition>(securityPositions.values());
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }


   public PortfolioRules getPortfolioRules() {
      return portfolioRules;
   }


   public void setPortfolioRules(PortfolioRules portfolioRules) {
      this.portfolioRules = portfolioRules;
   }


   public PortfolioGroup getPortfolioGroup() {
      return portfolioGroup;
   }


   public void setPortfolioGroup(PortfolioGroup portfolioGroup) {
      this.portfolioGroup = portfolioGroup;
   }
   
   public synchronized History<CashTransaction> getCashTransactionHistory() {
      return cashTransactionHistory;
   }
   public void setCashTransactionHistory(
         History<CashTransaction> cashTransactionHistory) {
      this.cashTransactionHistory = cashTransactionHistory;
   }


   public PortfolioPosition getPortfolioPosition() {
      return portfolioPosition;
   }


   public void setPortfolioPosition(PortfolioPosition portfolioPosition) {
      this.portfolioPosition = portfolioPosition;
   }
   
   
}





HISTORY CLASS
---------------
Code:
package ca.mcgill.learning.client.object;

import ca.mcgill.learning.client.ClientUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class History<T extends ITimeStamped> implements Serializable{
   
   /**
    *
    */
   private static final long serialVersionUID = 1L;
   
   private List<T> itemList;
   private boolean dailyLimit;
   private Date lastUpdate;
   
   public History() {
      this(false);
   }
   
   public History(boolean dailyLimit) {
      this.dailyLimit = dailyLimit;
      itemList = new SynchronousArrayList<T>();
   }
   
   public synchronized void clear() {
      itemList.clear();
   }
   
   public synchronized boolean contains(T item) {
      return itemList.contains(item);
   }
   
   public synchronized boolean isEmpty() {
      return itemList.isEmpty();
   }
   
   public synchronized int size() {
      return itemList.size();
   }
   
   public synchronized T getLast() {
      if(itemList.size()>0) {
         return itemList.get(itemList.size() - 1);
      }
      return null;
   }
   public synchronized T getFirst() {
      if(itemList.size()>0) {
         return itemList.get(0);
      }
      return null;
   }
   
   private void checkTimeLimit() {
      if(dailyLimit) {
         Date startOfTheDayDate = ClientUtils.getStartOfTheDay();
         T lastItem = getLast();
         if(lastItem != null) {
            if(lastItem.getDate().before(startOfTheDayDate)) {
               clear();
            }
         }
      }
   }
   
   public synchronized void addItem(T item) {
      checkTimeLimit();
      T lastItem = getLast();
      if(lastItem == null) {
         itemList.add(item);
      }else if(lastItem.getDate().compareTo(item.getDate())<0) {
         itemList.add(item);
      }else {
         for(int i = itemList.size()-1; i>=0; i--) {
            int compare = itemList.get(i).getDate().compareTo(item.getDate());
            if(compare < 0 ) {
               itemList.add(i+1, item); // should always work (i+1)
               break;
            }else if(compare == 0) {
               itemList.set(i, item); // replace existing
               break;
            }else if(i==0) {
               itemList.add(0, item);
               break;
            }
         }
      }
      setLastUpdate(item.getDate());
   }

   // since history can only be increased
   // TODO this is bad should change it
   public synchronized List<T> getItemList() {
//      return new ArrayList<T>(itemList); //copy to keep synchronized
      return itemList;
   }

   protected synchronized void setItemList(List<T> itemList) {
      this.itemList = itemList;
   }
   
   public synchronized T getItem(Date date) {
      T item = null;
      int ind = itemList.indexOf(date);
      if(ind != -1) {
         item = itemList.get(ind);
      }
      return item;
   }

   public synchronized void setLastUpdate(Date lastUpdate) {
      if(this.lastUpdate == null || lastUpdate.after(this.lastUpdate)) {
         this.lastUpdate = lastUpdate;
      }
   }

   public synchronized Date getLastUpdate() {
      return lastUpdate;
   }
   
   /**
    * Inclusive on both sides
    * @param fromDate
    * @param toDate
    * @return
    */
   public synchronized List<T> getRange(Date fromDate, Date toDate) {
      List<T> list = new ArrayList<T>();
      if (!isEmpty()) {
         for(int i=itemList.size()-1; i>=0; i--) {
            T item = itemList.get(i);
            Date itemDate = item.getDate();
            if(toDate==null || !itemDate.after(toDate)) {
               if(fromDate==null || !itemDate.before(fromDate)) {
                  list.add(item);
               }else if(fromDate != null){ //over the from Date: Done
                  break;
               }
            }
         }
      }
      return list;
   }
   
   
}


CASHTRANSACTION CLASS
-------------------------
Code:
package ca.mcgill.learning.client.object;

import java.io.Serializable;
import java.util.Date;

public class CashTransaction implements Serializable, ITimeStamped<CashTransaction>, Identifiable {
   /**
    *
    */
   private static final long serialVersionUID = 1L;
   
   private Portfolio portfolio;
   private double value; // negative for withdrawals, positive for deposits
   private Date date = new Date();
   
   private Long id;
   
   public Long getId() {
      return id;
   }
   
   protected void setId(Long id) {
      this.id = id;
   }
   
   public Portfolio getPortfolio() {
      return portfolio;
   }
   public void setPortfolio(Portfolio portfolio) {
      this.portfolio = portfolio;
   }
   public double getValue() {
      return value;
   }
   public void setValue(double value) {
      this.value = value;
   }
   public Date getDate() {
      return date;
   }
   public void setDate(Date date) {
      this.date = date;
   }
   
   public int compareTo(CashTransaction cashTransaction) {
      return date.compareTo(cashTransaction.date);
   }
   
   @Override
   public String toString() {
      return "Cash Transaction '" + (id!=null?id:"") + ": value = " + value + "@ " + date;
   }
}


CASH TRANSACTION MAPPING
--------------------------------

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="ca.mcgill.learning.client.object">
   <class name="CashTransaction" table="cash_transaction">
      <id name="id">
         <generator class="native"/>
      </id>
      
      <property name="value"/>
      <property name="date"/>
      <many-to-one name="portfolio" lazy="proxy" column="portfolio_id"/>
      
   </class>
</hibernate-mapping>


Top
 Profile  
 
 Post subject: Re: Unknown column 'elt' in 'field list'
PostPosted: Sun Jun 28, 2009 12:31 pm 
Newbie

Joined: Sun Jun 28, 2009 7:57 am
Posts: 2
Resolved: I replaced <element> with <one-to-many>.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.