2015-07-13 2 views
0

Я работаю в течение нескольких часов по этому вопросу о сопоставлении спящего режима. Я думаю, что ошибка может быть простой синтаксической ошибкой, но я не могу ее найти !!!Hibernate Mapping Класс исключений не найден

я побежал в следующее исключение, когда я выполнил мой код:

Initial SessionFactory creation failed.org.hibernate.MappingException: entity class not found: LegalFee 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at com.plm.dao.util.HibernateUtil.buildSessionFactory(HibernateUtil.java:33) 
    at com.plm.dao.util.HibernateUtil.getSessionFactory(HibernateUtil.java:39) 
    at com.plm.dao.AppTest.main(AppTest.java:15) 

Во-первых, я использую спящий режим 4.2 с Java 8 и MariaDB 10.

Смотреть все конфигурации ниже.

Мой hibernate.cfg.xml, я удалил конфигурацию C3P0:

<hibernate-configuration> 
    <session-factory> 
     <!-- Database connection settings --> 
     <property name='connection.driver_class'>com.mysql.jdbc.Driver</property> 
     <property name='connection.url'>jdbc:mysql://localhost:3306/PokerLeagueManager</property> 
     <property name='connection.username'>root</property> 
     <property name='connection.password'>mypassword</property> 
     <property name="show_sql">true</property> 

     <!-- SQL dialect --> 
     <property name='dialect'>org.hibernate.dialect.MySQL5InnoDBDialect</property> 

     <!-- Enable Hibernate's automatic session context management --> 
     <property name="current_session_context_class">thread</property> 
     <!-- Disable the second-level cache --> 
     <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> 


     <!-- Echo all executed SQL to stdout --> 
     <property name='show_sql'>true</property> 

     <mapping resource="mappings/BlindStructure.hbm.xml"/> 
     <mapping resource="mappings/Tournament.hbm.xml"/> 
     <mapping resource="mappings/LegalFee.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

Ошибка находится на LegalFee боба так сосредоточиться на нем. См создание таблицы SQL в legalFee:

CREATE TABLE `legalFee` (
    `idFee` int(11) NOT NULL, 
    `shortName` varchar(50) NOT NULL, 
    `description` varchar(200) DEFAULT NULL, 
    `feePercent` int(11) DEFAULT NULL, 
    `feeFixed` int(11) DEFAULT NULL, 
    PRIMARY KEY (`idFee`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Класс:

public class LegalFee implements Serializable { 

/** 
* generated serial uid 
*/ 
private static final long serialVersionUID = -2259355205530727294L; 

private int idFee; 
private String shortName; 
private String description; 
private Integer feePercent; 
private Integer feeFixed; 
private Set<Tournament> tournaments = new HashSet<Tournament>(0); 

public LegalFee() { 
} 

public LegalFee(int idFee, String shortName) { 
    this.idFee = idFee; 
    this.shortName = shortName; 
} 

public LegalFee(int idFee, String shortName, String description, 
     Integer feePercent, Integer feeFixed, Set<Tournament> tournaments) { 
    this.idFee = idFee; 
    this.shortName = shortName; 
    this.description = description; 
    this.feePercent = feePercent; 
    this.feeFixed = feeFixed; 
    this.tournaments = tournaments; 
} 

public int getIdFee() { 
    return this.idFee; 
} 

public void setIdFee(int idFee) { 
    this.idFee = idFee; 
} 

public String getShortName() { 
    return this.shortName; 
} 

public void setShortName(String shortName) { 
    this.shortName = shortName; 
} 

public String getDescription() { 
    return this.description; 
} 

public void setDescription(String description) { 
    this.description = description; 
} 

public Integer getFeePercent() { 
    return this.feePercent; 
} 

public void setFeePercent(Integer feePercent) { 
    this.feePercent = feePercent; 
} 

public Integer getFeeFixed() { 
    return this.feeFixed; 
} 

public void setFeeFixed(Integer feeFixed) { 
    this.feeFixed = feeFixed; 
} 

public Set<Tournament> getTournaments() { 
    return this.tournaments; 
} 

public void setTournaments(Set<Tournament> tournaments) { 
    this.tournaments = tournaments; 
} 

} 

И, наконец, LegalFee.hbm.xml:

<?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"> 

<hibernate-mapping> 
    <class name="LegalFee" table="legalFee" catalog="PokerLeagueManager" optimistic-lock="version"> 
     <id name="idFee" type="int"> 
      <column name="idFee" /> 
      <generator class="identity" /> 
     </id> 
     <property name="shortName" type="string"> 
      <column name="shortName" length="50" not-null="true" /> 
     </property> 
     <property name="description" type="string"> 
      <column name="description" length="200" /> 
     </property> 
     <property name="feePercent" type="java.lang.Integer"> 
      <column name="feePercent" /> 
     </property> 
     <property name="feeFixed" type="java.lang.Integer"> 
      <column name="feeFixed" /> 
     </property> 
     <set name="tournaments" table="tournament" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="legalFee_feeId" /> 
      </key> 
      <one-to-many class="Tournament" /> 
     </set> 
    </class> 
</hibernate-mapping> 

Спасибо за вашу помощь.

+1

Попробуйте установить полное имя вашего класса в LegalFee.hbm.xml, например. com.foocompany.LegalFee (класс node) –

+0

Я уже пробовал это решение. Он сделал все мои бобы с аналогичной ошибкой. Как и спящий режим, они совсем не находят. В этом случае ошибка: Начальное создание SessionFactory failed.org.hibernate.MappingException: ассоциация из турнира таблицы относится к немаркированному классу: LegalFee Исключение из потока «main» java.lang.ExceptionInInitializerError \t at com.plm. dao.util.HibernateUtil.buildSessionFactory (HibernateUtil.java:33) \t в com.plm.dao.util.HibernateUtil.getSessionFactory (HibernateUtil.java:39) \t в com.plm.dao.AppTest.main (AppTest. java: 15) – Wodric

+0

Я получил его, есть имя и параметр класса, которые нуждаются в полном квалифицированном имени – Wodric

ответ

0

Если ваш класс LegalFee не входит в пакет по умолчанию, вам необходимо предоставить полностью классифицированное имя класса. e.g "class name =" com.abc.xyx.LegalFee "table =" legalFee ""

+0

Я уже пробовал это решение. Он сделал все мои бобы с аналогичной ошибкой. Как и спящий режим, совсем не найти их – Wodric

+0

Вы можете попробовать это. <Боба ID = "SessionFactory" класс = "org.springframework.orm.hibernate4.LocalSessionFactoryBean" р: Datasource-исх = "DataSource" р: configLocation = "WEB-INF/классы/hibernate.cfg.xml" p: packagesToScan = "com.example.model" /> это сканирует все файлы в пакете. Не уверен, что он будет работать, но вы можете попробовать один раз. –

+0

Я получил его, есть имя и параметр класса, которым требуется полное имя – Wodric

Смежные вопросы