hi all,
i am using xd2 mvn2 plugin to generate xdoclet files... but it looks like
it is falling short when i am using associations..
here is the class that is failing...
code:
package com.mm.backend.model;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @hibernate.class table="ENTRYTYPES"
* @hibernate.discriminator column="discriminator"
*
*/
public class AbstractEntryType {
protected String description;
protected Long id;
protected String discriminator;
protected Integer version;
protected List entries =
new ArrayList();
/**
* @hibernate.property
* @return entry type description
*/
public String getDescription() {
// TODO Auto-generated method stub
return description;
}
/**
* @hibernate.property column="discriminator"
* insert="false"
* update="false"
*/
public String getDiscriminator() {
return discriminator;
}
/**
* @hibernate.id column="id"
* generator-class="increment"
* unsaved-value="-1"
*/
public Long getId() {
// TODO Auto-generated method stub
return id;
}
/**
* @hibernate.version
* unsaved-value="null"
* @return
*/
public Integer getVersion() {
return version;
}
public void setDescription(String description) {
// TODO Auto-generated method stub
this.description = description;
}
public void setDiscriminator(String discriminator) {
this.discriminator = discriminator;
}
public void setId(Long id) {
this.id = id;
}
public void setVersion(Integer version) {
this.version = version;
}
/**
* @hibernate.list cascade="save-update"
* @hibernate.collection-one-to-many class="
com.mm.backend.model.AbstractBudgetEntry"
* @hibernate.collection-key column="FK_ENTRY_ID"
* @return
*/
public List getEntries() {
return entries;
}
public void setEntries(List entries) {
this.entries = entries;
}
/** common methods ***/
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof AbstractEntryType)) return false;
final AbstractEntryType item = (AbstractEntryType) o;
if (! (id == item.getId()) ) return false;
return true;
}
public int hashCode() {
int result;
result = 29 * description.hashCode() + id.intValue() +
version.hashCode();
return result;
}
public String toString() {
return "id ('" + getId() + "'), " +
"Desc: '" + getDescription();
}
public int compareTo(Object o) {
if (o instanceof AbstractEntryType) {
// Don't compare Date objects! Use the time in milliseconds!
return String.valueOf(id).compareTo(
String.valueOf(
((AbstractEntryType)o).getId()));
}
return 0;
}
}
and here's the hbm.xml file that gets generated
<hibernate-mapping>
−
<class table="ENTRYTYPES" name="com.mm.backend.model.AbstractEntryType">
−
<id unsaved-value="-1" name="id" column="id">
<generator class="increment"/>
</id>
<discriminator column="discriminator"/>
<version unsaved-value="null" name="version"/>
<property name="description"/>
<property name="discriminator" column="discriminator" update="false"
insert="false"/>
−
<list cascade="save-update" name="entries">
<key/>
</list>
<subclass name="com.mm.backend.model.ExpenseType"
discriminator-value="Expense"/>
<subclass name="com.mm.backend.model.SavingsType"
discriminator-value="Savings"/>
</class>
</hibernate-mapping>
somehow the key is not getting populated... so in the output i got this :
[INFO] XDoclet plugin failed:
Line: 15 Column: 12
Message: The content of element type "list" is incomplete, it must match
"(me
ta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-
to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-upda
te?,sql-delete?,sql-delete-all?,filter*)".
[INFO]
------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: XDoclet plugin
failed:
Line: 15 Column: 12
Message: The content of element type "list" is incomplete, it must match
"(me
ta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-
to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-upda
te?,sql-delete?,sql-delete-all?,filter*)".
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:564)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(
DefaultLifecycleExecutor.java:480)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:459)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(
DefaultLifecycleExecutor.java:311)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen ts(
DefaultLifecycleExecutor.java:278)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:143)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:272)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java
:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java
:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: XDoclet plugin
failed :
Line: 15 Column: 12
Message: The content of element type "list" is incomplete, it must match
"(me
ta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-
to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-upda
te?,sql-delete?,sql-delete-all?,filter*)".
at org.codehaus.xdoclet.XDocletMojo.execute(XDocletMojo.java:158)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:443)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:539)
... 16 more
Caused by: org.generama.OutputValidationError:
Line: 15 Column: 12
Message: The content of element type "list" is incomplete, it must match
"(me
ta*,subselect?,cache?,synchronize*,comment?,key,(index|list-index),(element|one-
to-many|many-to-many|composite-element|many-to-any),loader?,sql-insert?,sql-upda
te?,sql-delete?,sql-delete-all?,filter*)".
at org.generama.defaults.XMLOutputValidator.validate(XMLOutputValidator.
java:97)
at org.generama.Plugin.start(Plugin.java:260)
at org.picocontainer.defaults.DefaultPicoContainer.start(DefaultPicoCont
ainer.java:349)
at
org.nanocontainer.integrationkit.LifecycleContainerBuilder.autoStart(
LifecycleContainerBuilder.java:52)
at
org.nanocontainer.integrationkit.LifecycleContainerBuilder.buildConta iner(
LifecycleContainerBuilder.java:45)
at org.codehaus.xdoclet.XDocletMojo.execute(XDocletMojo.java:149)
... 18 more
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 10 seco
could anyone help?
thanks and regards
marco