2012-10-26 11 views
6

H2 데이터베이스와 JBoss AS 7을 사용하고 있습니다. 이처럼이 데이터베이스에 연결하려고하는 독립 실행 형 응용 프로그램이 있습니다.Hibernate는 org.hibernate.persister.entity.SingleTableEntityPersister를 던졌습니다.

내 설정 파일 :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
             "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory name="Test"> 
    <property name="hibernate.connection.driver_class">org.h2.Driver</property> 
    <property name="hibernate.connection.url">jdbc:h2:mem:test</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property> 
    <mapping class="Kunde" resource="Kunde.hbm.xml"/> 
    <mapping class="Mitarbeiter" resource="Mitarbeiter.hbm.xml"/> 
</session-factory> 
</hibernate-configuration> 

내 매핑 파일은 다음과 같습니다

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<!-- Generated Oct 26, 2012 7:34:15 AM by Hibernate Tools 3.4.0.CR1 --> 
<hibernate-mapping> 
    <class name="Kunde" table="KUNDE"> 
     <id name="id" type="long"> 
      <column name="ID" /> 
      <generator class="assigned" /> 
     </id> 
     <property name="vorname" type="java.lang.String"> 
      <column name="VORNAME" /> 
     </property> 
     <property name="nachname" type="java.lang.String"> 
      <column name="NACHNAME" /> 
     </property> 
     <property name="firma" type="java.lang.String"> 
      <column name="FIRMA" /> 
     </property> 
    </class> 
</hibernate-mapping> 

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<!-- Generated Oct 26, 2012 7:34:15 AM by Hibernate Tools 3.4.0.CR1 --> 
<hibernate-mapping> 
    <class name="Mitarbeiter" table="MITARBEITER"> 
     <id name="id" type="long"> 
      <column name="ID" /> 
      <generator class="assigned" /> 
     </id> 
     <property name="vorname" type="java.lang.String"> 
      <column name="VORNAME" /> 
     </property> 
     <property name="nachname" type="java.lang.String"> 
      <column name="NACHNAME" /> 
     </property> 
    </class> 
</hibernate-mapping> 

내 엔티티 클래스 :

public class Kunde { 
    long id; 
    String vorname; 
    String nachname; 
    String firma; 

    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public String getVorname() { 
     return vorname; 
    } 

    public void setVorname(String vorname) { 
     this.vorname = vorname; 
    } 

    public String getNachname() { 
     return nachname; 
    } 

    public void setNachname(String nachname) { 
     this.nachname = nachname; 
    } 

    public String getFirma() { 
     return firma; 
    } 

    public void setFirma(String firma) { 
     this.firma = firma; 
    } 
} 

(다른 하나는 비슷합니다).

내 테스트 코드 :

public static void main(String[] args) { 
    try { 
     // This step will read hibernate.cfg.xml and prepare hibernate for 
     // use 
     Configuration configuration = new Configuration(); 
     configuration.configure(); 
     ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() 
       .applySettings(configuration.getProperties()) 
       .buildServiceRegistry(); 
     SessionFactory sessionFactory = configuration 
       .buildSessionFactory(serviceRegistry); 

     Session session = sessionFactory.openSession(); 

     // Create new instance of Kinde and set values in it by reading them 
     // from form object 
     System.out.println("Inserting Record"); 
     Kunde kunde = new Kunde(); 
     kunde.setId(1); 
     kunde.setVorname("A"); 
     kunde.setNachname("N"); 
     kunde.setFirma("Privat"); 
     session.save(kunde); 
     System.out.println("Done"); 

     // Actual insertion will happen at this step 
     session.flush(); 
     session.close(); 
    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } 
} 

예외 :

Okt 26, 2012 7:56:45 AM org.hibernate.annotations.common.Version <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final} 
Okt 26, 2012 7:56:45 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {4.0.1.Final} 
Okt 26, 2012 7:56:45 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Okt 26, 2012 7:56:45 AM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: HHH000021: Bytecode provider name : javassist 
Okt 26, 2012 7:56:45 AM org.hibernate.cfg.Configuration configure 
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml 
Okt 26, 2012 7:56:45 AM org.hibernate.cfg.Configuration getConfigurationInputStream 
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml 
Okt 26, 2012 7:56:45 AM org.hibernate.cfg.Configuration addResource 
INFO: HHH000221: Reading mappings from resource: Kunde.hbm.xml 
Okt 26, 2012 7:56:45 AM org.hibernate.cfg.Configuration addResource 
INFO: HHH000221: Reading mappings from resource: Mitarbeiter.hbm.xml 
Okt 26, 2012 7:56:45 AM org.hibernate.cfg.Configuration doConfigure 
INFO: HHH000041: Configured SessionFactory: Test 
Okt 26, 2012 7:56:45 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!) 
Okt 26, 2012 7:56:45 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
INFO: HHH000115: Hibernate connection pool size: 20 
Okt 26, 2012 7:56:45 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
INFO: HHH000006: Autocommit mode: false 
Okt 26, 2012 7:56:45 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
INFO: HHH000401: using driver [org.h2.Driver] at URL [jdbc:h2:mem:test] 
Okt 26, 2012 7:56:45 AM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
INFO: HHH000046: Connection properties: {} 
Okt 26, 2012 7:56:46 AM org.hibernate.dialect.Dialect <init> 
INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect 
Okt 26, 2012 7:56:46 AM org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation 
INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4 
Okt 26, 2012 7:56:46 AM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService 
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions) 
Okt 26, 2012 7:56:46 AM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init> 
INFO: HHH000397: Using ASTQueryTranslatorFactory 
Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister 

어떤 생각?


업데이트 :

바보 나 :

나는 나의 클래스 경로가 불완전 밝혀 전체 스택 추적 인쇄 :

Caused by: java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 23 more 

나는 javaassist의 JAR을 추가하고이다 지금 잘 작동합니다.

죄송합니다.

+0

+1 답장으로 수정 사항을 추가하십시오. –

답변

1

아마도 javassistjar 파일을 사용해야합니다. javassist-3.10.0.GA.jar를 사용했으며이 오류가 사라졌습니다.