Hi,

I am building a simple application using Hibernate and Maven.
I came across your plugin "hibernate3:hbm2ddl" which generates the tables in
the database. But, upon using it I get following exception:

~EXCEPTION~
[INFO] [hibernate3:hbm2ddl]
16:11:26,735  INFO org.hibernate.cfg.Environment - Hibernate 3.2.0.cr5
16:11:26,735  INFO org.hibernate.cfg.Environment - hibernate.properties not
found
16:11:26,766  INFO org.hibernate.cfg.Environment - Bytecode provider name :
cglib
16:11:26,766  INFO org.hibernate.cfg.Environment - using JDK 1.4
java.sql.Timestamp handling
[INFO] Configuration XML file loaded:
E:\Rishabh\Projects\Learning\auctionapp\src\main\resources\hibernate.cfg.xml
16:11:26,813  INFO org.hibernate.cfg.Configuration - configuring from file:
hibernate.cfg.xml
16:11:26,985  INFO org.hibernate.cfg.Configuration - Reading mappings from
resource: com/learning/app/model/BaseModel.hbm.xml
16:11:27,126  INFO org.hibernate.cfg.HbmBinder - Mapping class:
com.learning.app.model.BaseModel -> BaseModel
16:11:27,188  INFO org.hibernate.cfg.HbmBinder - Mapping union-subclass:
com.learning.app.model.User -> USER
16:11:27,204  INFO org.hibernate.cfg.HbmBinder - Mapping union-subclass:
com.learning.app.model.Role -> ROLE
16:11:27,204  INFO org.hibernate.cfg.Configuration - Configured
SessionFactory: null
16:11:27,204  INFO org.hibernate.cfg.Configuration - Reading mappings from
file:
E:\Rishabh\Projects\Learning\auctionapp\target\classes\com\learning\app\model\BaseModel.hbm.xml
[INFO] src/main/resources/database.properties not found within the project.
Trying absolute path.
[INFO] No hibernate properties file loaded.
16:11:27,251  INFO org.hibernate.cfg.Mappings - duplicate import:
com.learning.app.model.BaseModel->com.learning.app.model.BaseModel
16:11:27,251  INFO org.hibernate.cfg.Mappings - duplicate import:
com.learning.app.model.BaseModel->BaseModel
16:11:27,251  INFO org.hibernate.cfg.HbmBinder - Mapping class:
com.learning.app.model.BaseModel -> BaseModel
16:11:27,251  INFO org.hibernate.cfg.Mappings - duplicate import:
com.learning.app.model.User->com.learning.app.model.User
16:11:27,251  INFO org.hibernate.cfg.Mappings - duplicate import:
com.learning.app.model.User->User
Exception in thread "main" org.hibernate.InvalidMappingException: Could not
parse mapping document from file
E:\Rishabh\Projects\Learning\auctionapp\target\classes\com\learning\app\model\BaseModel.hbm.xml
        at org.hibernate.cfg.Configuration.addFile(Configuration.java:306)
        at org.hibernate.cfg.Configuration.addDirectory(Configuration.java:623)
        at org.hibernate.cfg.Configuration.addDirectory(Configuration.java:620)
        at org.hibernate.cfg.Configuration.addDirectory(Configuration.java:620)
        at org.hibernate.cfg.Configuration.addDirectory(Configuration.java:620)
        at org.hibernate.cfg.Configuration.addDirectory(Configuration.java:620)
        at
org.codehaus.mojo.hibernate3.configuration.DefaultComponentConfiguration.doConfiguration(DefaultComponentConfiguration.java:30)
        at
org.codehaus.mojo.hibernate3.configuration.AbstractComponentConfiguration.getConfiguration(AbstractComponentConfiguration.java:37)
        at
org.codehaus.mojo.hibernate3.exporter.Hbm2DDLExporterMojo.doExecute(Hbm2DDLExporterMojo.java:87)
        at
org.codehaus.mojo.hibernate3.HibernateExporterMojo.execute(HibernateExporterMojo.java:140)
        at
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:579)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:498)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:265)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:191)
        at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149)
        at 
org.apache.maven.DefaultMaven.execute_aroundBody0(DefaultMaven.java:223)
        at
org.apache.maven.DefaultMaven.execute_aroundBody1$advice(DefaultMaven.java:304)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:1)
        at
org.apache.maven.embedder.MavenEmbedder.execute_aroundBody2(MavenEmbedder.java:904)
        at
org.apache.maven.embedder.MavenEmbedder.execute_aroundBody3$advice(MavenEmbedder.java:304)
        at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:1)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:176)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:63)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:52)
Caused by: org.hibernate.DuplicateMappingException: Duplicate table mapping
USER
        at org.hibernate.cfg.Mappings.addDenormalizedTable(Mappings.java:192)
        at org.hibernate.cfg.HbmBinder.bindUnionSubclass(HbmBinder.java:787)
        at org.hibernate.cfg.HbmBinder.handleUnionSubclass(HbmBinder.java:2194)
        at 
org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2107)
        at 
org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2031)
        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:424)
        at 
org.hibernate.cfg.Configuration.addInputStream(Configuration.java:465)
        at org.hibernate.cfg.Configuration.addFile(Configuration.java:303)
        ... 23 more



What I noticed is that the plugin is loading my mapping file (*.hbm.xml)
twice! If I remove the <mapping> tag from my configuration file
(hibernate.cfg.xml) then everything works normally. Which means that my
mapping file is searched for in the classpath and loaded, and if I specify
it in the configuration file also then I get the above exception, for it has
loaded it again.

Is there a way to prevent the auto-loading of the mapping files from the
classpath and only load them when the plugin reads the configuration file?

Below is a portion of the pom.xml file.

~POM.XML~
...
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>hibernate3-maven-plugin</artifactId>
                <version>2.0-alpha-2</version>
                <configuration>
                    <components>
                        <component>
                            <name>hbm2ddl</name>
                            <implementation>configuration</implementation>
                        </component>
                    </components>
                    <componentProperties>
                        <drop>true</drop>
                       
<configurationfile>/src/main/resources/hibernate.cfg.xml</configurationfile>
                        <outputfilename>schema.sql</outputfilename>
                    </componentProperties>
                    <executions>
                        <execution>
                            <phase>process-resources</phase>
                            <goals>
                                <goal>hbm2ddl</goal>
                            </goals>
                        </execution>
                    </executions>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.6</version>
                    </dependency>
                </dependencies>
            </plugin>
...

Regards,
Rishabh
-- 
View this message in context: 
http://www.nabble.com/Auto-loading-of-mapping-%28*.hbm.xml%29-files-causing-exception-tp21308535p21308535.html
Sent from the mojo - user mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to