Thanks for responding so quickly.
With respect to some of my questions that were unclear:
1. JoinTables can map 1-1 and 1-n as well as n-n. I was not clear on how to reverse
engineer this situation.
2. I can use the same primary key in both tables to make a 1-1 relation. This wants a
@PrimaryKeyJoinColumn(s) annotation instead of @JoinColumn. I was not clear how to
reverse engineer this situation.
I understand that it would be a lot of work to add everything! I had understood from the
original Hibernate books years ago that the philosophy was that you could use three
strategies with Hibernate:
1. Annotate the Java
2. write an hbm.xml
3. reverse engineer the db metadata
choosing which ever one suited the situation (and whichever one you write, the other two
will be generated). Since the database metadata does not contain enough information to
generate the other two, you need to help that case with reveng.xml.
I understood the ultimate goal would be that there are equal capabilities with all three
strategies. If not, we should say that one of these is the best practice, but the others
can be useful at times (since the world seems to be moving away from xml, I guess that the
Java annotations would have to be primary?)
Java Persistence with Hibernate, Bauer and King, indicate that the above three strategies
are feasible (and recommend 2 only for the seasoned Hibernate expert). Also Dan
Allen's Seam in Action book gives the three strategies.
So I would not be put out of reveng.xml became as big as hbm.xml :) However, at the
moment, I would be happy if I could clearly understand what exactly is possible, and what
would be nice but is not there.
Further information on the error (this is H11 update installed) By the way, where do I
look to find the hibernate-reverse-engineering-3.0.dtd?:
reveng.xml file (all but foreign-key elements generated by wizard):
<?xml version="1.0" encoding="UTF-8"?>
| <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse
Engineering DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >
|
| <hibernate-reverse-engineering>
| <table-filter match-catalog="infosys" match-name="review"
/>
| <table-filter match-catalog="infosys" match-name="student"
/>
| <table-filter match-catalog="infosys" match-name="team" />
| <table-filter match-catalog="infosys" match-name="user_auth"
/>
| <table-filter match-catalog="infosys" match-name="user_roles"
/>
| <table-filter match-catalog="infosys" match-name="xuser"
/>
| <table catalog="infosys" name="team">
| <column name="name" jdbc-type=''></column>
| <column name="year" jdbc-type=''></column>
| <column name="leaderId" jdbc-type=''
property="leader"></column>
| <foreign-key constraint-name="team_ibfk_1"><one-to-one
property="leader"/></foreign-key>
| </table>
| <table catalog="infosys" name="student">
| <column name="studentNumber" jdbc-type=''></column>
| <column name="setLetter" jdbc-type=''></column>
| <column name="year" jdbc-type=''></column>
| <column name="CSTOption" jdbc-type=''></column>
| <column name="teamId" jdbc-type=''
property="tesm"></column>
| <column name="userId" jdbc-type=''
property="user"></column>
| <foreign-key constraint-name="student_ibfk_1"><many-to-one
property="team"/><set
property="members"/></foreign-key>
| <foreign-key constraint-name="student_ibfk_2"><one-to-one
property="user"/></foreign-key>
| </table>
| <table catalog="infosys" name="review">
| <column name="employee" jdbc-type=''></column>
| <column name="pos" jdbc-type=''></column>
| <column name="reviewer" jdbc-type=''></column>
| <column name="received" jdbc-type=''></column>
| <column name="period" jdbc-type=''></column>
| <column name="year" jdbc-type=''></column>
| <column name="reviewType" jdbc-type=''></column>
| <column name="tech1" jdbc-type=''></column>
| <column name="rateTech1" jdbc-type=''></column>
| <column name="tech2" jdbc-type=''></column>
| <column name="rateTech2" jdbc-type=''></column>
| <column name="tech3" jdbc-type=''></column>
| <column name="rateTech3" jdbc-type=''></column>
| <column name="tech4" jdbc-type=''></column>
| <column name="rateTech4" jdbc-type=''></column>
| <column name="rateTask1" jdbc-type=''></column>
| <column name="rateTask2" jdbc-type=''></column>
| <column name="rateTask3" jdbc-type=''></column>
| <column name="rateTask4" jdbc-type=''></column>
| <column name="rateTask5" jdbc-type=''></column>
| <column name="rateTask6" jdbc-type=''></column>
| <column name="rateTask7" jdbc-type=''></column>
| <column name="rateTask8" jdbc-type=''></column>
| <column name="ratePersonal1" jdbc-type=''></column>
| <column name="ratePersonal2" jdbc-type=''></column>
| <column name="ratePersonal3" jdbc-type=''></column>
| <column name="ratePersonal4" jdbc-type=''></column>
| <column name="ratePersonal5" jdbc-type=''></column>
| <column name="ratePersonal6" jdbc-type=''></column>
| <column name="ratePersonal7" jdbc-type=''></column>
| <column name="ratePersonal8" jdbc-type=''></column>
| <column name="rateLeadership1" jdbc-type=''></column>
| <column name="rateLeadership2" jdbc-type=''></column>
| <column name="rateLeadership3" jdbc-type=''></column>
| <column name="rateLeadership4" jdbc-type=''></column>
| <column name="summary" jdbc-type=''></column>
| <column name="comments" jdbc-type=''></column>
| <foreign-key constraint-name="review_ibfk_1"><many-to-one
property="employee"/></foreign-key>
| <foreign-key constraint-name="review_ibfk_2"><many-to-one
property="reviewer"/></foreign-key>
| </table>
| <table catalog="infosys" name="xuser" class="User"
schema="">
| <column name="lastName" jdbc-type=''></column>
| <column name="firstName" jdbc-type=''></column>
| <column name="userName" jdbc-type=''></column>
| <column name="userIsActive" jdbc-type=''></column>
| <column name="email" jdbc-type=''></column>
| <column name="emailIsPublic" jdbc-type=''></column>
| <column name="website" jdbc-type=''></column>
| <column name="employer" jdbc-type=''></column>
| <column name="employerWebSite" jdbc-type=''></column>
| <column name="pictureFile" jdbc-type=''></column>
| <column name="description" jdbc-type=''></column>
| <foreign-key constraint-name="xuser_ibfk_1"><one-to-one
property="userAuth" exclude="true"/></foreign-key>
| </table>
| <table catalog="infosys" name="user_roles"
class="UserRole">
| <column name="userName" jdbc-type=''></column>
| <column name="userRoles" jdbc-type=''
property="userRole"></column>
| <foreign-key constraint-name="user_roles_ibfk_1"><many-to-one
exclude="true"/></foreign-key>
| </table>
| <table catalog="infosys" name="user_auth">
| <column name="passwd" jdbc-type=''></column>
| </table>
| </hibernate-reverse-engineering>
|
stacktrace:
!ENTRY org.hibernate.eclipse.console 4 666 2009-03-06 09:31:55.046
| !MESSAGE org.hibernate.MappingException: Could not configure overrides from file:
C:\apps\workspace3.4.2\infosys-ejb\.settings\hibernate.reveng.xml
| !STACK 0
| org.hibernate.MappingException: Could not configure overrides from file:
C:\apps\workspace3.4.2\infosys-ejb\.settings\hibernate.reveng.xml
| at org.hibernate.cfg.reveng.OverrideRepository.addFile(OverrideRepository.java:119)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate$2.execute(CodeGenerationLaunchDelegate.java:296)
| at
org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:64)
| at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:94)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.buildConfiguration(CodeGenerationLaunchDelegate.java:285)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.runExporters(CodeGenerationLaunchDelegate.java:218)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.launch(CodeGenerationLaunchDelegate.java:138)
| at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764)
| at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614)
| at
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:865)
| at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1068)
| at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
| Caused by: org.hibernate.MappingException: java.lang.StringIndexOutOfBoundsException:
String index out of range: 0
| at
org.hibernate.cfg.reveng.OverrideRepository.addInputStream(OverrideRepository.java:157)
| at org.hibernate.cfg.reveng.OverrideRepository.addFile(OverrideRepository.java:115)
| ... 11 more
| Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
| at java.lang.String.charAt(String.java:558)
| at org.hibernate.mapping.Table.setSchema(Table.java:617)
| at org.hibernate.cfg.reveng.OverrideBinder.bindTables(OverrideBinder.java:103)
| at org.hibernate.cfg.reveng.OverrideBinder.bindRoot(OverrideBinder.java:46)
| at org.hibernate.cfg.reveng.OverrideRepository.add(OverrideRepository.java:170)
| at
org.hibernate.cfg.reveng.OverrideRepository.addInputStream(OverrideRepository.java:149)
| ... 12 more
| !SUBENTRY 1 org.hibernate.eclipse.console 4 666 2009-03-06 09:31:55.046
| !MESSAGE org.hibernate.MappingException: Could not configure overrides from file:
C:\apps\workspace3.4.2\infosys-ejb\.settings\hibernate.reveng.xml
| !STACK 0
| org.hibernate.MappingException: Could not configure overrides from file:
C:\apps\workspace3.4.2\infosys-ejb\.settings\hibernate.reveng.xml
| at org.hibernate.cfg.reveng.OverrideRepository.addFile(OverrideRepository.java:119)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate$2.execute(CodeGenerationLaunchDelegate.java:296)
| at
org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:64)
| at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:94)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.buildConfiguration(CodeGenerationLaunchDelegate.java:285)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.runExporters(CodeGenerationLaunchDelegate.java:218)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.launch(CodeGenerationLaunchDelegate.java:138)
| at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764)
| at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614)
| at
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:865)
| at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1068)
| at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
| Caused by: org.hibernate.MappingException: java.lang.StringIndexOutOfBoundsException:
String index out of range: 0
| at
org.hibernate.cfg.reveng.OverrideRepository.addInputStream(OverrideRepository.java:157)
| at org.hibernate.cfg.reveng.OverrideRepository.addFile(OverrideRepository.java:115)
| ... 11 more
| Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
| at java.lang.String.charAt(String.java:558)
| at org.hibernate.mapping.Table.setSchema(Table.java:617)
| at org.hibernate.cfg.reveng.OverrideBinder.bindTables(OverrideBinder.java:103)
| at org.hibernate.cfg.reveng.OverrideBinder.bindRoot(OverrideBinder.java:46)
| at org.hibernate.cfg.reveng.OverrideRepository.add(OverrideRepository.java:170)
| at
org.hibernate.cfg.reveng.OverrideRepository.addInputStream(OverrideRepository.java:149)
| ... 12 more
| !SUBENTRY 1 org.hibernate.eclipse.console 4 666 2009-03-06 09:31:55.046
| !MESSAGE org.hibernate.MappingException: java.lang.StringIndexOutOfBoundsException:
String index out of range: 0
| !STACK 0
| org.hibernate.MappingException: java.lang.StringIndexOutOfBoundsException: String
index out of range: 0
| at
org.hibernate.cfg.reveng.OverrideRepository.addInputStream(OverrideRepository.java:157)
| at org.hibernate.cfg.reveng.OverrideRepository.addFile(OverrideRepository.java:115)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate$2.execute(CodeGenerationLaunchDelegate.java:296)
| at
org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:64)
| at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:94)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.buildConfiguration(CodeGenerationLaunchDelegate.java:285)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.runExporters(CodeGenerationLaunchDelegate.java:218)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.launch(CodeGenerationLaunchDelegate.java:138)
| at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764)
| at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614)
| at
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:865)
| at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1068)
| at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
| Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
| at java.lang.String.charAt(String.java:558)
| at org.hibernate.mapping.Table.setSchema(Table.java:617)
| at org.hibernate.cfg.reveng.OverrideBinder.bindTables(OverrideBinder.java:103)
| at org.hibernate.cfg.reveng.OverrideBinder.bindRoot(OverrideBinder.java:46)
| at org.hibernate.cfg.reveng.OverrideRepository.add(OverrideRepository.java:170)
| at
org.hibernate.cfg.reveng.OverrideRepository.addInputStream(OverrideRepository.java:149)
| ... 12 more
| !SUBENTRY 1 org.hibernate.eclipse.console 4 666 2009-03-06 09:31:55.046
| !MESSAGE java.lang.StringIndexOutOfBoundsException: String index out of range: 0
| !STACK 0
| java.lang.StringIndexOutOfBoundsException: String index out of range: 0
| at java.lang.String.charAt(String.java:558)
| at org.hibernate.mapping.Table.setSchema(Table.java:617)
| at org.hibernate.cfg.reveng.OverrideBinder.bindTables(OverrideBinder.java:103)
| at org.hibernate.cfg.reveng.OverrideBinder.bindRoot(OverrideBinder.java:46)
| at org.hibernate.cfg.reveng.OverrideRepository.add(OverrideRepository.java:170)
| at
org.hibernate.cfg.reveng.OverrideRepository.addInputStream(OverrideRepository.java:149)
| at org.hibernate.cfg.reveng.OverrideRepository.addFile(OverrideRepository.java:115)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate$2.execute(CodeGenerationLaunchDelegate.java:296)
| at
org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:64)
| at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:94)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.buildConfiguration(CodeGenerationLaunchDelegate.java:285)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.runExporters(CodeGenerationLaunchDelegate.java:218)
| at
org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.launch(CodeGenerationLaunchDelegate.java:138)
| at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:764)
| at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:614)
| at
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:865)
| at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1068)
| at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
|
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4215819#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...