I cannot get this test through, please help
transvia Sep 21, 2007 2:41 PMI creat a project from seam-gen2.0 CR. I am using Jboss server 4.2.1, Seam2.0 CR, MySQL 5.0. The project can be built, depoyed and run correctly. Then I create a simple test case, but I cannot make it works.
I tested that entity factory can be created; entity manager can also be created. But I cannot do database operation, including select and insert. Please help!
Test code:
package persistentTier;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.hibernate.Session;
import org.jboss.seam.annotations.In;
import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;
import org.tt.user.User;
public class EntityManagerTest extends SeamTest {
//@PersistenceContext
private EntityManager em;
@Test
public void unitTestEntityManager() throws Exception{
EntityManagerFactory emf = Persistence.createEntityManagerFactory("tt");
em =emf.createEntityManager();
User user=em.find(User.class, new Double(1));
assert user.getPassword().equals("5527686");
em.close();
}
}User class:
package org.tt.user;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.validator.NotNull;
import org.jboss.seam.annotations.Name;
@Entity
@Name ("user")
@Table (name="user")
public class User implements Serializable {
private double id;
private String username;
private String password;
public User (){
username="";
password="";
}
@Id @GeneratedValue(strategy =GenerationType.AUTO)
public double getId () {return this.id;}
public void setId(long id){this.id=id;}
public String getUsername(){return this.username;}
public void setUsername(String username){this.username=username;}
public String getPassword(){return this.password;}
public void setPassword(String password){this.password=password;}
}
Database, MySQL 5.0
CREATE TABLE `user` ( `id` double NOT NULL auto_increment, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; /*Data for the table `user` */ insert into `user`(`id`,`username`,`password`) values (1,'oldreaper','5527686');
Erro message
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not load an entity: [org.tt.user.User#1.0] at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:647) at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:194) at persistentTier.EntityManagerTest.unitTestEntityManager(EntityManagerTest.java:29) Caused by: org.hibernate.exception.SQLGrammarException: could not load an entity: [org.tt.user.User#1.0] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.loadEntity(Loader.java:1865) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48) at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2992) at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:395) at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375) at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139) at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195) at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103) at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878) at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815) at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808) at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:174) ... 23 more Caused by: java.sql.SQLException: Table not found in statement [select user0_.id as id2_0_, user0_.username as username2_0_, user0_.password as password2_0_ from user user0_ where user0_.id=?] at org.hsqldb.jdbc.Util.throwError(Unknown Source) at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source) at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source) at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.doPrepareStatement(BaseWrapperManagedConnection.java:386) at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.prepareStatement(BaseWrapperManagedConnection.java:374) at org.jboss.resource.adapter.jdbc.WrappedConnection.prepareStatement(WrappedConnection.java:187) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:497) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:415) at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1538) at org.hibernate.loader.Loader.doQuery(Loader.java:661) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) at org.hibernate.loader.Loader.loadEntity(Loader.java:1851) ... 35 more ... Removed 22 stack frames