Hibernate 3 hbm2java
От: A_Gura Россия http://a-gura.livejournal.com
Дата: 08.10.05 12:40
Оценка:
Столкнулся с проблемой при переходе с Hibernate 2 на Hibernate 3. Не могу заставить работать hbm2java.

Вот кусок из build.xml для Ant.
    <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="classpath"/>

    <target name="gen-vo">
        <hibernatetool destdir="${class.dir}">
            <configuration propertyfile="${props.dir}/hibernate.properties">
                <fileset dir="${hbm.dir}">
                    <include name="**/*.hbm.xml" />
                </fileset>
            </configuration>

            <hbm2java />
        </hibernatetool>
    </target>


При запуске таски gen-vo получаю сообщение

SEVERE: Could not configure datastore from file: <some-mapping-file.hbm.xml>
org.hibernate.MappingException: class <some-class> not found while looking for property: name


Наверняка кто-то эту проблему уже решал. Поделитесь плиз опытом.

Спасибо.
... << RSDN@Home 1.1.4 stable rev. 510>>
Работать надо над собой...
Re: Hibernate 3 hbm2java
От: Jim_Bond Россия  
Дата: 12.05.09 08:19
Оценка:
Подобная же проблема.

Долго облазил весь инет — ничего дельного. В основном всё по старой версии hbm2java.
Вот натолкнулся на этот топик с типичной проблемой, но к сожалению без продолжения.
Для продолжения темы решил писать сюда.

Сейчас пытаюсь побороть Hibernate Tools 3.2.1.
Задача: генерация Java POJO`s классов на основе *.hbm.xml
При отрабатывании ant скрипта вылетает ошибка на отсутствие класса, который описан в мапппинге. (в частности, так же жалуется на отсутствие полей в классе)
С первого взгляда, наступает мозговой ступор — hibernate tools ждет от меня скомпиленные классы, которые я жду от него в исходном ввиде. %) (cycle dependencies).

entityS.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="Book" table="BOOK">
        <id name="id" type="string" unsaved-value="null" >
            <column name="BOOK_ID" sql-type="char(32)" not-null="true"/>
            <generator class="uuid.hex"/>
        </id>
        <property column="BOOK_NAME" name="name"/>
        <property column="BOOK_ISBN" name="isbn"/>
    </class>
</hibernate-mapping>



build.xml
<?xml version="1.0"?>
<project name="UProject" basedir=".">

     <property name="generateddir" value="${basedir}/src"/>

     <path id="toolslib">
         <path location="lib/hibernate-tools.jar" />
         <path location="lib/hibernate3.jar" />
         <path location="lib/freemarker.jar" />
         <path location="lib/commons-logging-1.0.4.jar" />
         <path location="lib/dom4j-1.6.1.jar" />
         <path location="lib/commons-collections-2.1.1.jar" />
     </path>
      
    <taskdef name="hibernatetool"
             classname="org.hibernate.tool.ant.HibernateToolTask"
             classpathref="toolslib" />
     <target name="codegen" description="Generate Java source code from the Hibernate mapping files">
        <hibernatetool destdir="${generateddir}">
            <configuration configurationfile="hibernate.cfg.xml">
                <fileset dir="${basedir}/src/hbm"/>
            </configuration>
            <hbm2java/>
        </hibernatetool>
    </target>
</project>



log
Apache Ant version 1.7.0 compiled on December 13 2006
Buildfile: build.xml
Detected Java version: 1.5 in: C:\Program Files\Java\jdk1.5.0_06\jre
Detected OS: Windows XP
parsing buildfile build.xml with URI = file:/build.xml
Project base dir set to: ant

codegen:
[hibernatetool] Executing Hibernate Tool with a Standard Configuration dropping antc from path as it doesn't exist
[hibernatetool] 1. task: hbm2java (Generates a set of .java files)
[hibernatetool] 08.05.2009 16:16:17 org.hibernate.cfg.Environment <clinit>
[hibernatetool] INFO: Hibernate 3.2.5
[hibernatetool] 08.05.2009 16:16:17 org.hibernate.cfg.Environment <clinit>
[hibernatetool] INFO: hibernate.properties not found
[hibernatetool] 08.05.2009 16:16:17 org.hibernate.cfg.Environment buildBytecodeProvider
[hibernatetool] INFO: Bytecode provider name : cglib
[hibernatetool] 08.05.2009 16:16:17 org.hibernate.cfg.Environment <clinit>
[hibernatetool] INFO: using JDK 1.4 java.sql.Timestamp handling
[hibernatetool] 08.05.2009 16:16:17 org.hibernate.cfg.Configuration configure
[hibernatetool] INFO: configuring from file: hibernate.cfg.xml
[hibernatetool] 08.05.2009 16:16:17 org.hibernate.cfg.Configuration doConfigure
[hibernatetool] INFO: Configured SessionFactory: null
[hibernatetool] 08.05.2009 16:16:17 org.hibernate.cfg.Configuration addFile
[hibernatetool] INFO: Reading mappings from file: src\hbm\entityS.hbm.xml
[hibernatetool] 08.05.2009 16:16:17 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
[hibernatetool] INFO: Mapping class: Book -> BOOK
[hibernatetool] An exception occurred while running exporter #2:hbm2java (Generates a set of .java files)
[hibernatetool] To get the full stack trace run ant with -verbose
[hibernatetool] Failed in building configuration when adding src\hbm\entityS.hbm.xml
[hibernatetool] org.hibernate.InvalidMappingException: Could not parse mapping document from file src\hbm\entityS.hbm.xml
[hibernatetool] org.hibernate.MappingException: class Book not found while looking for property: name
[hibernatetool] java.lang.ClassNotFoundException: Book
[hibernatetool] A class were not found in the classpath of the Ant task.
[hibernatetool] Ensure that the classpath contains the classes needed for Hibernate and your code are in the classpath.

BUILD FAILED
build.xml:29: Failed in building configuration when adding src\hbm\entityS.hbm.xml
        at org.hibernate.tool.ant.ConfigurationTask.addFile(ConfigurationTask.java:155)
        at org.hibernate.tool.ant.ConfigurationTask.addMappings(ConfigurationTask.java:133)
        at org.hibernate.tool.ant.ConfigurationTask.doConfiguration(ConfigurationTask.java:97)
        at org.hibernate.tool.ant.ConfigurationTask.getConfiguration(ConfigurationTask.java:55)
        at org.hibernate.tool.ant.HibernateToolTask.getConfiguration(HibernateToolTask.java:302)
        at org.hibernate.tool.ant.HibernateToolTask.getProperties(HibernateToolTask.java:318)
        at org.hibernate.tool.ant.ExporterTask.configureExporter(ExporterTask.java:94)
        at org.hibernate.tool.ant.Hbm2JavaExporterTask.configureExporter(Hbm2JavaExporterTask.java:34)
        at org.hibernate.tool.ant.ExporterTask.execute(ExporterTask.java:39)
        at org.hibernate.tool.ant.HibernateToolTask.execute(HibernateToolTask.java:186)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        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:585)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:357)
        at org.apache.tools.ant.Target.performTasks(Target.java:385)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
        at org.apache.tools.ant.Main.runBuild(Main.java:698)
        at org.apache.tools.ant.Main.startAnt(Main.java:199)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from file src\hbm\entityS.hbm.xml
        at org.hibernate.cfg.Configuration.addFile(Configuration.java:319)
        at org.hibernate.tool.ant.ConfigurationTask.addFile(ConfigurationTask.java:150)
        ... 26 more
Caused by: org.hibernate.MappingException: class Book not found while looking for property: name
        at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:74)
        at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:276)
        at org.hibernate.cfg.HbmBinder.createProperty(HbmBinder.java:2174)
        at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2151)
        at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2041)
        at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:359)
        at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
        at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
        at org.hibernate.cfg.Configuration.add(Configuration.java:669)
        at org.hibernate.cfg.Configuration.addFile(Configuration.java:309)
        ... 27 more
Caused by: java.lang.ClassNotFoundException: Book
        at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1383)
        at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1324)
        at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1072)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
        at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:70)
        ... 36 more
--- Nested Exception ---
org.hibernate.InvalidMappingException: Could not parse mapping document from file src\hbm\entityS.hbm.xml
        at org.hibernate.cfg.Configuration.addFile(Configuration.java:319)
        at org.hibernate.tool.ant.ConfigurationTask.addFile(ConfigurationTask.java:150)
        at org.hibernate.tool.ant.ConfigurationTask.addMappings(ConfigurationTask.java:133)
        at org.hibernate.tool.ant.ConfigurationTask.doConfiguration(ConfigurationTask.java:97)
        at org.hibernate.tool.ant.ConfigurationTask.getConfiguration(ConfigurationTask.java:55)
        at org.hibernate.tool.ant.HibernateToolTask.getConfiguration(HibernateToolTask.java:302)
        at org.hibernate.tool.ant.HibernateToolTask.getProperties(HibernateToolTask.java:318)
        at org.hibernate.tool.ant.ExporterTask.configureExporter(ExporterTask.java:94)
        at org.hibernate.tool.ant.Hbm2JavaExporterTask.configureExporter(Hbm2JavaExporterTask.java:34)
        at org.hibernate.tool.ant.ExporterTask.execute(ExporterTask.java:39)
        at org.hibernate.tool.ant.HibernateToolTask.execute(HibernateToolTask.java:186)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
        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:585)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:357)
        at org.apache.tools.ant.Target.performTasks(Target.java:385)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
        at org.apache.tools.ant.Main.runBuild(Main.java:698)
        at org.apache.tools.ant.Main.startAnt(Main.java:199)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
Caused by: org.hibernate.MappingException: class Book not found while looking for property: name
        at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:74)
        at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:276)
        at org.hibernate.cfg.HbmBinder.createProperty(HbmBinder.java:2174)
        at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2151)
        at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2041)
        at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:359)
        at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
        at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
        at org.hibernate.cfg.Configuration.add(Configuration.java:669)
        at org.hibernate.cfg.Configuration.addFile(Configuration.java:309)
        ... 27 more
Caused by: java.lang.ClassNotFoundException: Book
        at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1383)
        at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1324)
        at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1072)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
        at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:70)
        ... 36 more

Total time: 1 second



Кто сталкивался?

Спасибо.
Re[2]: Hibernate 3 hbm2java
От: Jim_Bond Россия  
Дата: 12.05.09 15:59
Оценка:
Не уж то за 4 года так и не встречали данную проблему, решив её?

Может хоть идеи есть какие-нибудь?

Буду благодарен любой мысли по этой проблеме.
Re[2]: Hibernate 3 hbm2java
От: Jim_Bond Россия  
Дата: 13.05.09 14:09
Оценка:
Проблема была в неуказанных типах у полей.

entityS.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="Book" table="BOOK">
        <id name="id" type="string"></id>
        <property column="BOOK_NAME" name="name" type="string"/>
        <property column="BOOK_ISBN" name="isbn" type="string"/>
    </class>
</hibernate-mapping>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.