Hello. I'm trying to wrap Hibernate around an existing MySQL database and am having some serious growing pains, being new to Hibernate. I keep bumping into unexpected issues, and I've gotten stuck. Let's start with the snippets:
User table DDL
Code:
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(15) default NULL,
`password` varchar(15) default NULL,
`violations` int(11) default NULL,
`fname` varchar(20) default NULL,
`lname` varchar(25) default NULL,
`addr1` varchar(25) default NULL,
`addr2` varchar(25) default NULL,
`city` varchar(15) default NULL,
`state` char(2) default NULL,
`zip` varchar(10) default NULL,
`country` varchar(15) default NULL,
`phone` varchar(25) default NULL,
`fax` varchar(25) default NULL,
`email` varchar(40) default NULL,
`regdate` datetime default NULL,
`lastchangedate` datetime default NULL,
`emailpref` smallint(6) default NULL,
`months` int(11) default NULL,
`amount` double default NULL,
`accepteddisclaimer` datetime default NULL,
`expiration` datetime default NULL,
`ackedmsgs` varchar(200) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY `UQ__users__0EA330E9` (`username`),
UNIQUE KEY `PK__users__0DAF0CB0` (`id`)
) TYPE=MyISAM
User.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="com.greymatter.optioninsight.hibernate.User" table="users">
<id name="id">
<generator class="identity"/>
</id>
<property name="acceptedDisclaimer" column="accepteddisclaimer"/>
<property name="ackedMsgs" column="ackedmsgs"/>
<property name="addr1"/>
<property name="addr2"/>
<property name="amount"/>
<property name="city"/>
<property name="country"/>
<property name="email"/>
<property name="emailPref" column="emailpref"/>
<property name="expiration"/>
<property name="fax"/>
<property name="fname"/>
<property name="lastChangeDate" column="lastchangedate"/>
<property name="lname"/>
<property name="months"/>
<property name="password"/>
<property name="phone"/>
<property name="regDate" column="regdate"/>
<property name="state"/>
<property name="username" unique="true"/>
<property name="violations"/>
<property name="zip"/>
<!--
<set name="machines" table="UserMachine" inverse="true" lazy="true">
<key column="userid"/>
<one-to-many class="com.greymatter.optioninsight.hibernate.Machine"/>
</set>
-->
<!--
<set name="sessions" table="session" inverse="true" lazy="true">
<key column="userid"/>
<one-to-many class="com.greymatter.optioninsight.hibernate.UserSession"/>
</set>
-->
</class>
</hibernate-mapping>
<!-- parsed in 0ms -->
User.java
Code:
/*
* Created on Nov 28, 2003
*/
package com.greymatter.optioninsight.hibernate;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* This is a Data Transfer Object
*
* @author Lee
*/
public class User {
private static Log LOG = LogFactory.getLog(User.class);
private Long id;
private String username;
private String password;
private BigInteger violations;
private String fname;
private String lname;
private String addr1;
private String addr2;
private String city;
private String state;
private String zip;
private String country;
private String phone;
private String fax;
private String email;
private Date regDate;
private Date lastChangeDate;
private BigInteger emailPref;
private BigInteger months;
private BigDecimal amount;
private Date acceptedDisclaimer;
private Date expiration;
private String ackedMsgs;
// private Set sessions;
public User() {
}
... standard getters and setters removed to save space ...
}
UserTest.java
Code:
/*
* Created on Nov 28, 2003
*
*/
package test.com.greymatter.optioninsight.hibernate;
import java.math.BigInteger;
import java.util.List;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import net.sf.hibernate.Hibernate;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Session;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.greymatter.optioninsight.GLOBALS;
import com.greymatter.optioninsight.hibernate.User;
/**
* @author Lee
*/
public class UserTest extends TestCase {
private static Log LOG = LogFactory.getLog(UserTest.class);
private Session session = null;
/**
* Constructor for UserTest.
* @param arg0
*/
public UserTest(String arg0) {
super(arg0);
}
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
session = GLOBALS.getSession();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
session.disconnect();
GLOBALS.HibernateSessionFactory.close();
}
public void testAddUser() {
try {
LOG.debug("testAddUser");
// confirm it doesn't exist
List users = session.find("from User where username = ?", "testUsername", Hibernate.STRING);
assertEquals(0, users.size());
// now add it
User user = new User();
user.setFname("testFirst");
user.setLname("testLast");
user.setUsername("testUsername");
user.setPassword("testPassword");
user.setEmail("testEmail@testDomain.com");
session.save(user);
LOG.debug("id of added item is " + user.getId());
// confirm addition
users = session.find("from User where username = ?", "testUsername", Hibernate.STRING);
assertEquals(1, users.size());
} catch( HibernateException he ) {
LOG.error("Exception", he);
fail("exception");
}
}
public void testLoadUser() {
try {
LOG.debug("testLoadUser");
User user = new User();
LOG.debug("a");
session.load(user, new Long(42));
LOG.debug("b");
LOG.debug("id of loaded item is " + user.getId());
LOG.debug("username of loaded item is " + user.getUsername());
LOG.debug("email of loaded item is " + user.getEmail());
} catch( Exception he ) {
LOG.error("Exception", he);
fail("exception");
}
LOG.debug("c");
}
public void testDeleteUser() {
try {
LOG.debug("testDeleteUser");
// confirm it exists
List users = session.find("from User where username = ?", "testUsername", Hibernate.STRING);
assertEquals(1, users.size());
// now delete it
users = session.find("from User where username = ?", "testUsername", Hibernate.STRING);
LOG.debug("found " + users.size());
User user = (User)users.get(0);
LOG.debug("id of first item is " + user.getId());
//////////session.delete(user);
session.flush();
// confirm deletion
users = session.find("from User where username = ?", "testUsername", Hibernate.STRING);
assertEquals(0, users.size());
} catch( HibernateException he ) {
LOG.error("Exception", he);
fail("exception");
}
}
/**
* Assembles and returns a test suite for
* all the test methods of this test case.
*
* @return A non-null test suite.
*/
public static Test suite() {
// Reflection is used here to add all
// the testXXX() methods to the suite.
TestSuite suite = new TestSuite(UserTest.class);
return suite;
}
}
And now the output from the test script
Code:
13:44:48,110 INFO Environment:403 - Hibernate 2.0.3
13:44:48,180 INFO Environment:437 - loaded properties from resource hibernate.properties: {hibernate.connection.driver_class=org.gjt.mm.mysql.Driver, hibernate.cglib.use_reflection_optimizer=false, hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect, hibernate.jdbc.use_streams_for_binary=true, hibernate.jdbc.batch_size=0, hibernate.query.substitutions=true 1, false 0, yes 'Y', no 'N', hibernate.query.imports=net.sf.hibernate.test, net.sf.hibernate.eg, hibernate.proxool.pool_alias=pool1, hibernate.connection.username=qwe, hibernate.connection.url=jdbc:mysql://192.168.1.60:3306/optioninsight, hibernate.show_sql=true, hibernate.connection.password=zxc, hibernate.statement_cache.size=25, hibernate.connection.pool_size=1}
13:44:48,190 INFO Environment:451 - using java.io streams to persist binary types
13:44:48,200 INFO Environment:462 - JVM proxy support: true
13:44:48,200 INFO Configuration:283 - Mapping resource: com/greymatter/optioninsight/hibernate/User.hbm.xml
13:44:49,122 INFO Binder:178 - Mapping class: com.greymatter.optioninsight.hibernate.User -> users
13:44:49,272 INFO Configuration:283 - Mapping resource: com/greymatter/optioninsight/hibernate/Machine.hbm.xml
13:44:49,342 INFO Binder:178 - Mapping class: com.greymatter.optioninsight.hibernate.Machine -> machines
13:44:49,362 INFO Configuration:283 - Mapping resource: com/greymatter/optioninsight/hibernate/UserSession.hbm.xml
13:44:49,402 INFO Binder:178 - Mapping class: com.greymatter.optioninsight.hibernate.UserSession -> session
13:44:49,422 INFO Configuration:492 - processing one-to-many association mappings
13:44:49,422 INFO Configuration:503 - processing foreign key constraints
13:44:49,582 INFO SessionFactoryImpl:132 - building session factory
13:44:49,602 INFO Dialect:83 - Using dialect: net.sf.hibernate.dialect.MySQLDialect
13:44:49,612 INFO DriverManagerConnectionProvider:41 - Hibernate connection pool size: 1
13:44:49,622 INFO DriverManagerConnectionProvider:70 - using driver: org.gjt.mm.mysql.Driver at URL: jdbc:mysql://192.168.1.60:3306/optioninsight
13:44:49,622 INFO DriverManagerConnectionProvider:71 - connection properties: {user=qwe, password=zxc}
13:44:49,632 INFO PreparedStatementCache:60 - prepared statement cache size: 25
13:44:49,632 INFO SessionFactoryImpl:162 - Use outer join fetching: true
13:44:49,853 INFO SessionFactoryImpl:185 - Use scrollable result sets: true
13:44:49,863 INFO SessionFactoryImpl:194 - echoing all SQL to stdout
13:44:50,574 INFO SessionFactoryObjectFactory:82 - no JDNI name configured
13:44:50,574 INFO SessionFactoryImpl:269 - Query language substitutions: {no='N', true=1, yes='Y', false=0}
13:44:50,634 DEBUG UserTest:65 - testAddUser
Hibernate: select user0_.id as id, user0_.accepteddisclaimer as accepted2_, user0_.ackedmsgs as ackedmsgs, user0_.addr1 as addr1, user0_.addr2 as addr2, user0_.amount as amount, user0_.city as city, user0_.country as country, user0_.email as email, user0_.emailpref as emailpref, user0_.expiration as expiration, user0_.fax as fax, user0_.fname as fname, user0_.lastchangedate as lastcha14_, user0_.lname as lname, user0_.months as months, user0_.password as password, user0_.phone as phone, user0_.regdate as regdate, user0_.state as state, user0_.username as username, user0_.violations as violations, user0_.zip as zip from users user0_ where (username=? )
13:44:50,734 INFO SessionFactoryImpl:684 - closing
13:44:50,734 INFO PreparedStatementCache:210 - cleaning up prepared statement cache
13:44:50,734 INFO DriverManagerConnectionProvider:144 - cleaning up connection pool: jdbc:mysql://192.168.1.60:3306/optioninsight
13:44:50,744 DEBUG UserTest:89 - testLoadUser
13:44:50,744 DEBUG UserTest:92 - a
Hibernate: select user0_.id as id, user0_.accepteddisclaimer as accepted2_, user0_.ackedmsgs as ackedmsgs, user0_.addr1 as addr1, user0_.addr2 as addr2, user0_.amount as amount, user0_.city as city, user0_.country as country, user0_.email as email, user0_.emailpref as emailpref, user0_.expiration as expiration, user0_.fax as fax, user0_.fname as fname, user0_.lastchangedate as lastcha14_, user0_.lname as lname, user0_.months as months, user0_.password as password, user0_.phone as phone, user0_.regdate as regdate, user0_.state as state, user0_.username as username, user0_.violations as violations, user0_.zip as zip from users user0_ where user0_.id=?
13:44:50,854 ERROR UserTest:99 - Exception
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2165)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2634)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:164)
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:191)
at net.sf.hibernate.type.SerializableType.fromBytes(SerializableType.java:72)
at net.sf.hibernate.type.SerializableType.get(SerializableType.java:35)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:59)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:51)
at net.sf.hibernate.type.AbstractType.hydrate(AbstractType.java:66)
at net.sf.hibernate.loader.Loader.hydrate(Loader.java:419)
at net.sf.hibernate.loader.Loader.loadFromResultSet(Loader.java:373)
at net.sf.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:342)
at net.sf.hibernate.loader.Loader.getRow(Loader.java:281)
at net.sf.hibernate.loader.Loader.doFind(Loader.java:159)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:587)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:42)
at net.sf.hibernate.persister.EntityPersister.load(EntityPersister.java:396)
at net.sf.hibernate.impl.SessionImpl.doLoad(SessionImpl.java:1889)
at net.sf.hibernate.impl.SessionImpl.doLoadByObject(SessionImpl.java:1734)
at net.sf.hibernate.impl.SessionImpl.load(SessionImpl.java:1683)
at test.com.greymatter.optioninsight.hibernate.UserTest.testLoadUser(UserTest.java:93)
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:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:392)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:276)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:167)
rethrown as
org.apache.commons.lang.SerializationException
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:170)
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:191)
at net.sf.hibernate.type.SerializableType.fromBytes(SerializableType.java:72)
at net.sf.hibernate.type.SerializableType.get(SerializableType.java:35)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:59)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:51)
at net.sf.hibernate.type.AbstractType.hydrate(AbstractType.java:66)
at net.sf.hibernate.loader.Loader.hydrate(Loader.java:419)
at net.sf.hibernate.loader.Loader.loadFromResultSet(Loader.java:373)
at net.sf.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:342)
at net.sf.hibernate.loader.Loader.getRow(Loader.java:281)
at net.sf.hibernate.loader.Loader.doFind(Loader.java:159)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:587)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:42)
at net.sf.hibernate.persister.EntityPersister.load(EntityPersister.java:396)
at net.sf.hibernate.impl.SessionImpl.doLoad(SessionImpl.java:1889)
at net.sf.hibernate.impl.SessionImpl.doLoadByObject(SessionImpl.java:1734)
at net.sf.hibernate.impl.SessionImpl.load(SessionImpl.java:1683)
at test.com.greymatter.optioninsight.hibernate.UserTest.testLoadUser(UserTest.java:93)
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:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:392)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:276)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:167)
Caused by: java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2165)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2634)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:164)
... 35 more
rethrown as
net.sf.hibernate.type.SerializationException: Could not deserialize a serializable property:
at net.sf.hibernate.type.SerializableType.fromBytes(SerializableType.java:75)
at net.sf.hibernate.type.SerializableType.get(SerializableType.java:35)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:59)
at net.sf.hibernate.type.NullableType.nullSafeGet(NullableType.java:51)
at net.sf.hibernate.type.AbstractType.hydrate(AbstractType.java:66)
at net.sf.hibernate.loader.Loader.hydrate(Loader.java:419)
at net.sf.hibernate.loader.Loader.loadFromResultSet(Loader.java:373)
at net.sf.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:342)
at net.sf.hibernate.loader.Loader.getRow(Loader.java:281)
at net.sf.hibernate.loader.Loader.doFind(Loader.java:159)
at net.sf.hibernate.loader.Loader.loadEntity(Loader.java:587)
at net.sf.hibernate.loader.EntityLoader.load(EntityLoader.java:42)
at net.sf.hibernate.persister.EntityPersister.load(EntityPersister.java:396)
at net.sf.hibernate.impl.SessionImpl.doLoad(SessionImpl.java:1889)
at net.sf.hibernate.impl.SessionImpl.doLoadByObject(SessionImpl.java:1734)
at net.sf.hibernate.impl.SessionImpl.load(SessionImpl.java:1683)
at test.com.greymatter.optioninsight.hibernate.UserTest.testLoadUser(UserTest.java:93)
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:324)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:392)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:276)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:167)
Caused by: org.apache.commons.lang.SerializationException
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:170)
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:191)
at net.sf.hibernate.type.SerializableType.fromBytes(SerializableType.java:72)
... 33 more
Caused by: java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2165)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2634)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:734)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:253)
at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:164)
... 35 more
13:44:50,894 INFO SessionFactoryImpl:684 - closing
13:44:50,894 INFO PreparedStatementCache:210 - cleaning up prepared statement cache
13:44:50,924 INFO DriverManagerConnectionProvider:144 - cleaning up connection pool: jdbc:mysql://192.168.1.60:3306/optioninsight
13:44:50,944 DEBUG UserTest:107 - testDeleteUser
Hibernate: select user0_.id as id, user0_.accepteddisclaimer as accepted2_, user0_.ackedmsgs as ackedmsgs, user0_.addr1 as addr1, user0_.addr2 as addr2, user0_.amount as amount, user0_.city as city, user0_.country as country, user0_.email as email, user0_.emailpref as emailpref, user0_.expiration as expiration, user0_.fax as fax, user0_.fname as fname, user0_.lastchangedate as lastcha14_, user0_.lname as lname, user0_.months as months, user0_.password as password, user0_.phone as phone, user0_.regdate as regdate, user0_.state as state, user0_.username as username, user0_.violations as violations, user0_.zip as zip from users user0_ where (username=? )
Hibernate: select user0_.id as id, user0_.accepteddisclaimer as accepted2_, user0_.ackedmsgs as ackedmsgs, user0_.addr1 as addr1, user0_.addr2 as addr2, user0_.amount as amount, user0_.city as city, user0_.country as country, user0_.email as email, user0_.emailpref as emailpref, user0_.expiration as expiration, user0_.fax as fax, user0_.fname as fname, user0_.lastchangedate as lastcha14_, user0_.lname as lname, user0_.months as months, user0_.password as password, user0_.phone as phone, user0_.regdate as regdate, user0_.state as state, user0_.username as username, user0_.violations as violations, user0_.zip as zip from users user0_ where (username=? )
13:44:51,074 DEBUG UserTest:113 - found 1
13:44:51,074 DEBUG UserTest:115 - id of first item is 977
Hibernate: select user0_.id as id, user0_.accepteddisclaimer as accepted2_, user0_.ackedmsgs as ackedmsgs, user0_.addr1 as addr1, user0_.addr2 as addr2, user0_.amount as amount, user0_.city as city, user0_.country as country, user0_.email as email, user0_.emailpref as emailpref, user0_.expiration as expiration, user0_.fax as fax, user0_.fname as fname, user0_.lastchangedate as lastcha14_, user0_.lname as lname, user0_.months as months, user0_.password as password, user0_.phone as phone, user0_.regdate as regdate, user0_.state as state, user0_.username as username, user0_.violations as violations, user0_.zip as zip from users user0_ where (username=? )
13:44:51,104 INFO SessionFactoryImpl:684 - closing
13:44:51,104 INFO PreparedStatementCache:210 - cleaning up prepared statement cache
13:44:51,114 INFO DriverManagerConnectionProvider:144 - cleaning up connection pool: jdbc:mysql://192.168.1.60:3306/optioninsight
One of the issues I've faced is that my database can contain nulls in many columns. I learned that I had to change a number of primitive types to nullable types such as BigInteger and BigDecimal. The thing that's got me stuck now is the current exception, which seems very odd. I know that the item with key value of 42 exists in the table, so I'm not sure why it's failing. And why am I getting an EOFException of all things? That seems very strange.
I apologize for the length of this message, but I've hopefully provided all the details necessary.
Thank you in advance for your help,
Lee Grey