0
votes

I'm trying to use the Hibernate Code Generation feature in Hibernate Tools Eclipse Add-On. It is giving me the following error:

org.hibernate.InvalidMappingException: Could not parse mapping document from resource Alert.hbm.xml Could not parse mapping document from resource Alert.hbm.xml org.hibernate.MappingException: class Alert not found while looking for property: alertId class Alert not found while looking for property: alertId org.hibernate.MappingException: class Alert not found while looking for property: alertId class Alert not found while looking for property: alertId java.lang.ClassNotFoundException: Alert Alert

It is not finding the class Alert.java but I thought the Code Generator (hence the name...) was supposed to generate all the hibernate classes for me.

Using eclipse Indigo with Hibernate Tools 3.4.x.

Here's my hibernate.cfg.xml:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<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/findata?tcpKeepAlive=true
        </property>
        <property name="connection.username">root</property>
        <property name="connection.password">madmax1.</property>

        <property name="connection.pool_size">2</property>
        <property name="show_sql">true</property>
        <property name="dialect">
            org.hibernate.dialect.mysqldialect
        </property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">
            org.hibernate.cache.NoCacheProvider
        </property>

        <mapping resource="Alert.hbm.xml" />
        <mapping resource="Entity.hbm.xml" />
        <mapping resource="FactData.hbm.xml" />
        <mapping resource="TimeEvent.hbm.xml" />
        <mapping resource="User.hbm.xml" />
        <mapping resource="AlertTarget.hbm.xml" />
        <mapping resource="LogAlert.hbm.xml" />
    </session-factory>
</hibernate-configuration>

Here's Alert.hbm.xml:

<?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>
    <class name="Alert" table="alerts">
        <id name="alertId" column="id">
            <generator class="assigned"/>
        </id>
        <property name="limitValue" column="limit_value" type="decimal" />
        <!-- The unique=true property makes the many-to-one a one-to-one relationship -->
        <many-to-one name="alertEntity" 
            class="Entity" column="entity_id" 
            not-null="true" cascade="all" unique="true"/>
        <set name="alert_targets" table="alerts_alert_targets" cascade="all">
            <key column="alert_id" />
            <many-to-many column="alert_target_id"
                class="AlertTarget" />   
        </set>
   </class>
</hibernate-mapping>
2
Where are are these files in your project (hibernate.cfg.xml and Alert.hbm.xml)? Which exporters are you trying to run in the code generator? Can you successfully create a Hibernate configuration and view the mappings/classes?Shane

2 Answers

1
votes

weird it is looking for the to-be-generated class.

I will check the hibernate-reverse.xml file and check if it does not have additional attributes that may result in this.

Alternatively, during generation, try to setup the hibernate-revenge.xml and hibernate.cfg.xml rather than using the existing ones.

1
votes

The cause turned out to be the fact that the "type" was not specified for the "id" property in Alert.hbm.xml.