Reverse engineer of many-to-many association MySQL) does not put table attribute in
hbm.xml file
------------------------------------------------------------------------------------------------
Key: HBX-749
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HBX-749
Project: Hibernate Tools
Type: Bug
Components: reverse-engineer
Versions: 3.2beta7
Environment: Hibernate : 3.2.0.cr4
Hibernate Tools : 3.2.0.beta7
MySQL database : 5.0.24-community-nt via TCP/IP
MySQL Connector : mysql-connector-java-3.1.13-bin.jar
Eclipse : 3.2
Reporter: Vaughn Butt
Priority: Minor
Attachments: Person.hbm.xml, Role.hbm.xml, linktest_ddl.sql
The problem appears to be that the hbm.xml file generated for two classes that have a
Many-To-Many relationship does not include the attribute for the link (aka association)
table name.
see
http://forum.hibernate.org/viewtopic.php?t=964363
When I tried to navigate across the association using the generated hbm.xml file I got
this stack trace (snipped):
WARNING: SQL Error: 1146, SQLState: 42S02
5/09/2006 14:00:24 org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: Table 'blah.enginemodels' doesn't exist
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could
not initialize a collection: [com.acme.model.ChassisModel.engineModels#1]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
When I added the table="<linktablename>" attribute to the "set"
element the navigation succeeded.
<set name="roles" inverse="true"
table="lt_role_person">
<key>
<column name="person_pkid" not-null="true">
<comment></comment>
</column>
</key>
<many-to-many entity-name="nz.co.linktest.model.Role">
<column name="role_pkid" not-null="true">
<comment></comment>
</column>
</many-to-many>
</set>
I don't think the stuff in the log is related but I could be wrong so...
The file workspace\org.hibernate.eclipse.console\hibernate-tools.log had something like
2006-09-02 17:59:32,812 0 [ Worker-5] WARN ibernate.cfg.reveng.JDBCReader -
The JDBC driver didn't report any primary key columns in lt_e_model_c_model. Asking
rev.eng. strategy
2006-09-02 17:59:32,812 0 [ Worker-5] WARN ibernate.cfg.reveng.JDBCReader -
Rev.eng. strategy did not report any primary key columns for lt_e_model_c_model
2006-09-02 18:09:08,093 575281 [ Worker-1] WARN ibernate.cfg.reveng.JDBCReader -
The JDBC driver didn't report any primary key columns in lt_e_model_c_model. Asking
rev.eng. strategy
2006-09-02 18:09:08,109 575297 [ Worker-1] WARN ibernate.cfg.reveng.JDBCReader -
Rev.eng. strategy did not report any primary key columns for lt_e_model_c_model
2006-09-03 08:03:53,718 0 [ Worker-9] WARN ibernate.cfg.reveng.JDBCReader -
The JDBC driver didn't report any primary key columns in lt_e_model_c_model. Asking
rev.eng. strategy
2006-09-03 08:03:53,750 32 [ Worker-9] WARN ibernate.cfg.reveng.JDBCReader -
Rev.eng. strategy did not report any primary key columns for lt_e_model_c_model
2006-09-03 16:01:57,687 0 [ Worker-3] WARN ibernate.cfg.reveng.JDBCReader -
The JDBC driver didn't report any primary key columns in lt_e_model_c_model. Asking
rev.eng. strategy
2006-09-03 16:01:58,125 438 [ Worker-3] WARN ibernate.cfg.reveng.JDBCReader -
Rev.eng. strategy did not report any primary key columns for lt_e_model_c_model
2006-09-03 16:05:27,312 209625 [ Worker-3] WARN ibernate.cfg.reveng.JDBCReader -
The JDBC driver didn't report any primary key columns in lt_e_model_c_model. Asking
rev.eng. strategy
2006-09-03 16:05:27,406 209719 [ Worker-3] WARN ibernate.cfg.reveng.JDBCReader -
Rev.eng. strategy did not report any primary key columns for lt_e_model_c_model
where lt_e_model_c_model is like the name of the link table that the reveng originally
"failed" on. Interestingly there does not seem to be any similar log entries
for the attached example.
The file workspace\org.hibernate.eclipse.console\hibernate-console.xml-8 had something
(some other stuff removed) like
<?xml version="1.0"
encoding="UTF-8"?><hibernate-console><configuration
name="Linktest"><hibernate-config-xml
location="/Linktest/src/hibernate.cfg.xml"/><classpath><path
location="/Linktest/bin"/><path
location="/Linktest/lib/mysql-connector-java-3.1.13-bin.jar"/></classpath></configuration></hibernate-console>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira