From: <ei...@ti...> - 2005-11-14 11:24:49
|
Bit late perhaps, but this has been fixed now. There was a problem with remarks on columns used in m2m relationships. .e > Hi there, > > i am going to write my diploma thesis about an application build with > ejb3.0 > > I am studying now for about 3 weeks on this topic. I built a simple > database and tried to generate the 2.1 bean classes using middlegen. I > had some problems with the version from the cvs (1.2.2), porting back to > 1.2.1 fixed that. > But now i am trying to get the same database running with middlegen > 1.2.2, directly from cvs, and got issues with many2many relations. > First my db: > > +++++++++++++++++++++++++++++++++++++++++++++++++++ > -- a little soup for all > > CREATE TABLE Recipe ( > Recipe_Id integer UNIQUE Not NULL, > Recipe_Author varchar(30), > Recipe_Name varchar(40), > Recipe_Price float, > CONSTRAINT PK_Recipe_Id PRIMARY KEY (Recipe_Id) > ); > > > CREATE TABLE Cook ( > Cook_Id integer UNIQUE Not NULL, > Cook_Name varchar(30), > Cook_Prename varchar(30), > Cook_Address varchar(50), > Cook_Zip varchar(10), > Cook_Town varchar(30), > Cook_Phone varchar(50), > CONSTRAINT PK_Cook_Id PRIMARY KEY (Cook_Id) > ); > > CREATE TABLE Common_Bean ( > Common_Bean_Id integer UNIQUE Not NUll, > Common_Bean_Color varchar(10), > Common_Bean_Size integer, > Common_Bean_Type varchar(30), > CONSTRAINT PK_Common_Bean_Id PRIMARY KEY (Common_Bean_Id) > ); > > CREATE TABLE Bean_Soup ( > Bean_Soup_Id integer UNIQUE Not NULL, > Bean_Soup_Name varchar(30), > Bean_Soup_CookingTime varchar(20), > Bean_Soup_Endurance integer, > Bean_Soup_Recipe_Id integer, > CONSTRAINT PK_Bean_Soup_Id PRIMARY KEY (Bean_Soup_Id), > CONSTRAINT FK_Bean_Soup_Recipe_id FOREIGN KEY (Bean_Soup_Recipe_Id) > REFERENCES Recipe (Recipe_Id) > ); > > CREATE TABLE Bean_2_Soup ( > Bean_Soup_Id integer Not NULL, > Common_Bean_Id integer Not NULL, > CONSTRAINT PK_Bean_2_Soup PRIMARY KEY (Bean_Soup_Id, > Common_Bean_Id), > CONSTRAINT FK_Bean_2_Soup_List_Of_The_Soups > FOREIGN KEY (Bean_Soup_Id) REFERENCES Bean_Soup (Bean_Soup_Id), > CONSTRAINT FK_Bean_2_Soup_List_Of_The_Beans > FOREIGN KEY (Common_Bean_Id) REFERENCES Common_Bean > (Common_Bean_Id) > ); > > CREATE TABLE Cook_2_Soup ( > Bean_Soup_Id integer Not NULL, > Cook_Id integer Not NULL, > CONSTRAINT PK_Cook_2_Soup PRIMARY KEY (Bean_Soup_Id, Cook_Id), > CONSTRAINT FK_Cook_2_Soup_List_Of_The_Soups > FOREIGN KEY (Bean_Soup_Id) REFERENCES Bean_Soup (Bean_Soup_Id), > CONSTRAINT FK_Bean_2_Soup_List_Of_The_Cooks > FOREIGN KEY (Cook_Id) REFERENCES Cook (Cook_Id) > ); > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > There are two tables for the many2many realtions. One Soup can have > several beans, and one soup can have quite a bunch of cooks, if this is > helpfull for the soup... =) > > Now the ant script for building the classes: > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > > <!DOCTYPE project [ > <!--<!ENTITY database SYSTEM "file:./config/database/hsqldb.xml"> > --> > <!ENTITY database SYSTEM "file:./config/database/postgresql.xml"> > > <!ENTITY ejb SYSTEM "file:./config/ejb/jboss.xml"> > ]> > > <project name="BeanSoup EJB3.0" default="all" basedir="."> > > <property file="${user.home}/build.properties"/> > <property file="${basedir}/build.properties"/> > <property name="middlegen.home" > value="${basedir}/.."/> > <property name="xdoclet.version" value="1.2"/> > > <property name="name" value="beansoup.entity"/> > <property name="unique.name" value="${name}"/> > <property name="appxml.src.file" > value="${basedir}/src/application.xml"/> > <property name="lib.dir" value="${basedir}/lib"/> > <property name="src.dir" value="${basedir}/src"/> > <property name="java.src.dir" value="${src.dir}/java"/> > <property name="web.src.dir" value="${src.dir}/web"/> > > <property name="build.dir" value="${basedir}/build"/> > <property name="build.java.dir" value="${build.dir}/java"/> > <property name="build.gen-src.dir" value="${build.dir}/gen-src"/> > <property name="build.classes.dir" value="${build.dir}/classes"/> > <property name="persistencelayer.plugin" value="cmp30"/> > > &database; > &ejb; > > <property name="datasource.jndi.name" > value="${name}/datasource"/> > > <path id="lib.class.path"> > <pathelement path="${basedir}"/> > <pathelement path="${database.driver.classpath}"/> > <fileset dir="${lib.dir}"> > <include name="*.jar"/> > </fileset> > <!-- The middlegen jars --> > <fileset dir="${middlegen.home}"> > <include name="*.jar"/> > </fileset> > </path> > > <target name="init"> > <available property="xdoclet1.2+" > classname="xdoclet.modules.ejb.EjbDocletTask" > classpathref="lib.class.path"/> > <available property="xdoclet-jars-installed" > file="lib/xdoclet-${xdoclet.version}.jar"/> > </target> > > <!-- Run Middlegen > --> > <!-- > =================================================================== --> > <target > name="middlegen" > description="Run Middlegen" > depends="init,fail-if-no-xdoclet-1.2" > unless="middlegen.skip" > > > <mkdir dir="${build.gen-src.dir}"/> > > <taskdef > name="middlegen" > classname="middlegen.MiddlegenTask" > classpathref="lib.class.path" > /> > > <middlegen > appname="${name}" > prefsdir="${src.dir}" > gui="${gui}" > databaseurl="${database.url}" > initialContextFactory="${java.naming.factory.initial}" > providerURL="${java.naming.provider.url}" > datasourceJNDIName="${datasource.jndi.name}" > driver="${database.driver}" > username="${database.userid}" > password="${database.password}" > schema="${database.schema}" > catalog="${database.catalog}" > includeViews="false" > > > > <!-- Tables for the Beansoup --> > <table generate="true" name="recipe"/> > <table generate="true" name="common_bean"/> > <table generate="true" name="bean_soup"/> > <table generate="true" name="cook"/> > <table generate="true" name="bean_2_soup"/> > <table generate="true" name="cook_2_soup"/> > > > > <many2many> > <tableb generate="true" name="bean_soup"/> > <jointable name="bean_2_soup" generate="true"/> > <tablea generate="true" name="common_bean"/> > </many2many> > > <many2many> > <tablea generate="true" name="bean_soup"/> > <jointable name="cook_2_soup" generate="true"/> > <tableb generate="true" name="cook"/> > </many2many> > > <cmp30 > destination="${build.gen-src.dir}" > package="${name}.ejb" > mergedir="${basedir}/src/middlegen" > > > </cmp30> > <!-- > <cmp20 > destination="${build.gen-src.dir}" > package="${name}.ejb" > interfacepackage="${name}.interfaces" > jndiprefix="${unique.name}" > pkclass="false" > dataobject="false" > valueobject="true" > sessionfacade="true" > viewtype="local" > mergedir="${basedir}/src/middlegen" > readonly="false" > fkcmp="true" > guid="true" > > > --> > </middlegen> > </target> > > > <!-- > =================================================================== --> > <!-- Build everything > --> > <!-- > =================================================================== --> > <target name="all" description="Build everything" > depends="clean,middlegen" /> > > <!-- > =================================================================== --> > <!-- Clean everything > --> > <!-- > =================================================================== --> > <target name="clean" description="Clean all generated stuff"> > <delete dir="${build.dir}" /> > </target> > > <target name="ejb-jar" description="just to prevent error > message ;-)" /> > > </project> > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > I left some target in order to retain the clarity. > ant tells me about an error: > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > [middlegen] 2005-09-22 15:25:32,919 ERROR [middlegen.FileProducer] > Invocation of method 'getColumn' in class > middlegen.plugins.entitybean.CMP30Table threw exception class > java.lang.IllegalArgumentException : There is no column named > common_bean_id in the table named bean_soup > [middlegen] org.apache.velocity.exception.MethodInvocationException: > Invocation of method 'getColumn' in class > middlegen.plugins.entitybean.CMP30Table threw exception class > java.lang.IllegalArgumentException : There is no column named > common_bean_id in the table named bean_soup > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:291) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:218) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:350) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:84) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:107) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94) > [middlegen] at > org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:216) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:153) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:109) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94) > [middlegen] at > org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:216) > [middlegen] at > org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:153) > [middlegen] at > org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:271) > [middlegen] at > org.apache.velocity.app.VelocityEngine.evaluate(VelocityEngine.java:358) > [middlegen] at middlegen.FileProducer.generate(FileProducer.java:328) > [middlegen] at > middlegen.FileProducer.generateForTable(FileProducer.java:246) > [middlegen] at middlegen.Plugin.doIt(Plugin.java:587) > [middlegen] at middlegen.Plugin.generate(Plugin.java:445) > [middlegen] at middlegen.Middlegen.writeSource(Middlegen.java:355) > [middlegen] at middlegen.swing.JMiddlegenFrame > $1.actionPerformed(JMiddlegenFrame.java:75) > [middlegen] at > javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849) > [middlegen] at javax.swing.AbstractButton > $Handler.actionPerformed(AbstractButton.java:2169) > [middlegen] at > javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420) > [middlegen] at > javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) > [middlegen] at > javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234) > [middlegen] at java.awt.Component.processMouseEvent(Component.java:5488) > [middlegen] at > javax.swing.JComponent.processMouseEvent(JComponent.java:3126) > [middlegen] at java.awt.Component.processEvent(Component.java:5253) > [middlegen] at java.awt.Container.processEvent(Container.java:1966) > [middlegen] at java.awt.Component.dispatchEventImpl(Component.java:3955) > [middlegen] at java.awt.Container.dispatchEventImpl(Container.java:2024) > [middlegen] at java.awt.Component.dispatchEvent(Component.java:3803) > [middlegen] at > java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) > [middlegen] at > java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892) > [middlegen] at > java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) > [middlegen] at java.awt.Container.dispatchEventImpl(Container.java:2010) > [middlegen] at java.awt.Window.dispatchEventImpl(Window.java:1774) > [middlegen] at java.awt.Component.dispatchEvent(Component.java:3803) > [middlegen] at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) > [middlegen] at > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) > [middlegen] at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) > [middlegen] at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) > [middlegen] at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) > [middlegen] at > java.awt.EventDispatchThread.run(EventDispatchThread.java:110) > [middlegen] middlegen.MiddlegenException: Invocation of method > 'getColumn' in class middlegen.plugins.entitybean.CMP30Table threw > exception class java.lang.IllegalArgumentException : There is no column > named common_bean_id in the table named bean_soup > [middlegen] at middlegen.FileProducer.generate(FileProducer.java:342) > [middlegen] at > middlegen.FileProducer.generateForTable(FileProducer.java:246) > [middlegen] at middlegen.Plugin.doIt(Plugin.java:587) > [middlegen] at middlegen.Plugin.generate(Plugin.java:445) > [middlegen] at middlegen.Middlegen.writeSource(Middlegen.java:355) > [middlegen] at middlegen.swing.JMiddlegenFrame > $1.actionPerformed(JMiddlegenFrame.java:75) > [middlegen] at > javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849) > [middlegen] at javax.swing.AbstractButton > $Handler.actionPerformed(AbstractButton.java:2169) > [middlegen] at > javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420) > [middlegen] at > javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258) > [middlegen] at > javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234) > [middlegen] at java.awt.Component.processMouseEvent(Component.java:5488) > [middlegen] at > javax.swing.JComponent.processMouseEvent(JComponent.java:3126) > [middlegen] at java.awt.Component.processEvent(Component.java:5253) > [middlegen] at java.awt.Container.processEvent(Container.java:1966) > [middlegen] at java.awt.Component.dispatchEventImpl(Component.java:3955) > [middlegen] at java.awt.Container.dispatchEventImpl(Container.java:2024) > [middlegen] at java.awt.Component.dispatchEvent(Component.java:3803) > [middlegen] at > java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) > [middlegen] at > java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892) > [middlegen] at > java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) > [middlegen] at java.awt.Container.dispatchEventImpl(Container.java:2010) > [middlegen] at java.awt.Window.dispatchEventImpl(Window.java:1774) > [middlegen] at java.awt.Component.dispatchEvent(Component.java:3803) > [middlegen] at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) > [middlegen] at > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) > [middlegen] at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) > [middlegen] at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) > [middlegen] at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) > [middlegen] at > java.awt.EventDispatchThread.run(EventDispatchThread.java:110) > > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > when i deactivate the <many2many> Elements, everything works, but the > many2many mapping in the class files are missing. > Whats wrong with it? > > Thanks for your help > > martin > > > > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. > Download > it for free - -and be entered to win a 42" plasma tv or your very own > Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > _______________________________________________ > middlegen-user mailing list > mid...@li... > https://lists.sourceforge.net/lists/listinfo/middlegen-user > |