Thanks for your help first.
It's *only* Value Object's file that don't generate, other's , like local/remote home/interfce generate correctly.
Andrew Stevens wrote:
Enclose my bean file fore ref.Do any other files get generated? i.e. is it *only* the VOs that don't work? Are the other correct and as you expect them?
As you see, i already include @ebj.persistence tag... and fields...
----->8----- my bean file-----No @ejb.persistence tag? Given how many times <XDtEjbPersistent:forAllPersistentFields ...> appears in the valueobject.xdt template, I'm not surprised you're having problems :-) Having said that, I'm still surprised if it generates nothing - I'd have thought it more like you'd get a VO containing no fields. Your class-level javadoc comment is in the right place, isn't it? (i.e. immediately before the class declaration)
..
...
/*
* @ejb.bean
* name="attendance/Record"
* display-name="Attendance Record Entity"
* type="CMP"
* jndi-name="ejb/attendance/Record"
* local-jndi-name="ejb/attendance/LocalRecord"
* primkey-field="id"
*
* @ejb.transaction
* type="Required"
*
* @ejb:env-entry name="SequenceName"
* value="RecordID"
*
* @ejb:ejb-ref ejb-name="attendance/RecordID/SequenceGenerator"
*
* @ejb.interface
* remote-class="com.webgforce.attendance.ejb.interfaces.Record"
*
* @ejb.value-object
* name="Record"
* match="*"
*
* @ejb.value-object
* name="RecordAutoMachine"
* match="AutoMachine"
*
* @ejb:data-object extends="com.webgforce.ejb.interfaces.AbstractData"
* setdata="false"
*
* @ejb.finder
* signature="java.util.Collection findAll()"
* unchecked="true"
*
* @ejb.persistence
* table-name="AttRecord"
*
* @jboss:table-name table-name="AttRecord"
*
* @jboss:create-table create="true"
*
* @jboss:remove-table remove="true"
*
* @jboss.ejb-ref-jndi
* jndi-name="ejb/attendance/Record"
* ref-name="attendance/Record"
*/
abstract class RecordBean extends BaseEntityBean implements EntityBean {
/**
* Id of this Record. This is not remote since the primary key can be extracted by other means.
*
* @ejb.pk-field
* @ejb.persistent-field
* @ejb.interface-method
* @ejb.persistence column-name="id"
*
* @jboss.auto-increment
*/
public abstract Integer getId();
public abstract void setId(Integer id);
....
..
....
/**
* @ejb.interface-method
* view-type="both"
*/
public abstract RecordValue getRecordValue();
/**
* @ejb.interface-method
* view-type="both"
*/
public abstract void setRecordValue(RecordValue value);
/**
* Create Record.
*
* @ejb.create-method
*/
public RecordPK ejbCreate(RecordValue value)
throws CreateException {
setId(value.getId());
setRecordValue(value);
return null;
}
....
..
------>8----------------------
If there's other stuff being generated, that suggests your fileset is okay; next most likely reason no VOs would be generated for the class is it doesn't "see" the ejb.value-object class-level tag. But if that's the case I wouldn't expect it to see your @ejb.ejb-ref tag either and the relevant element would be missing from the DD.Andrew.
My source fileset should be ok, that why it could generate other kind of files (interface, home...etc.). And my xdoclet classes ref, should be reference all libs that come with xdoclet-bin-1.2b2\lib.
Anyway, i think it must missing some tag in my bean file.... just that i don't fully understand. Please Help, thanks.
Gordon
package attendance.ejb;
import attendance.interfaces.Record;
import attendance.interfaces.RecordData;
import attendance.interfaces.RecordPK;
import attendance.interfaces.RecordValue;
import javax.ejb.CreateException;
import javax.ejb.EntityBean;
import ejb.BaseEntityBean;
/*
* @ejb.bean
* name="attendance/Record"
* display-name="Attendance Record Entity"
* type="CMP"
* jndi-name="ejb/attendance/Record"
* local-jndi-name="ejb/attendance/LocalRecord"
* primkey-field="id"
*
* @ejb.transaction
* type="Required"
*
* @ejb:env-entry name="SequenceName"
* value="RecordID"
*
* @ejb:ejb-ref ejb-name="attendance/RecordID/SequenceGenerator"
*
* @ejb.interface
* remote-class="attendance.ejb.interfaces.Record"
*
* @ejb.value-object
* name="Record"
* match="*"
*
* @ejb.value-object
* name="RecordAutoMachine"
* match="AutoMachine"
*
* @ejb:data-object extends="ejb.interfaces.AbstractData"
* setdata="false"
*
* @ejb.finder
* signature="java.util.Collection findAll()"
* unchecked="true"
*
* @ejb.persistence
* table-name="AttRecord"
*
* @jboss:table-name table-name="AttRecord"
*
* @jboss:create-table create="true"
*
* @jboss:remove-table remove="true"
*
* @jboss.ejb-ref-jndi
* jndi-name="ejb/attendance/Record"
* ref-name="attendance/Record"
*/
abstract class RecordBean extends BaseEntityBean implements EntityBean {
/**
* Id of this Record. This is not remote since the primary key can be
extracted by other means.
*
* @ejb.pk-field
* @ejb.persistent-field
* @ejb.interface-method
* @ejb.persistence column-name="id"
*
* @jboss.auto-increment
*/
public abstract Integer getId();
public abstract void setId(Integer id);
/**
* Balance of the account.
*
* @ejb.interface-method
* @ejb.persistence column-name="MachineID"
* @jboss.sql-type VARCHAR
* @jboss.jdbc-type java.lang.String
*
*/
public abstract String getMachineID();
public abstract void setMachineID(String MachineID);
/**
* @ejb.interface-method
* view-type="both"
*/
public abstract AutoMachineValue getAutoMachineValue();
/**
* @ejb.interface-method
* view-type="both"
*/
public abstract RecordValue getRecordValue();
/**
* @ejb.interface-method
* view-type="both"
*/
public abstract void setRecordValue(RecordValue value);
/**
* Create Record.
*
* @ejb.create-method
*/
public RecordPK ejbCreate(RecordValue value)
throws CreateException {
setId(value.getId());
setRecordValue(value);
return null;
}
/**
* Create Record.
*/
public void ejbPostCreate(RecordValue value)
throws CreateException {
}
}
