Inheritance problem(migrate from 1.0.3 to 1.0.4)

"Ohara Su" <[email protected]>
Newsgroups gmane.comp.jakarta.ojb.user
Message-ID <[email protected]>
Hi

I read http://db.apache.org/ojb/docu/guides/advanced-technique.html
and I use Mapping Inheritance Hierarchies/Table Per Subclass via Foreign
Key.
My java class are list below.
When I call PB API to store DriverDownloadLog, I got errors in ojb 1.0.4

[org.apache.ojb.broker.accesslayer.JdbcAccessImpl] ERROR:
* SQLException during execution of sql-statement:
* sql statement was 'INSERT INTO DriverDownloadLog
(id,fileTile,fileName,fileSize,driverID,UserActionLogID) VALUES
(?,?,?,?,?,?) '
* Exception message is [ORA-02291: integrity constraint (
SVTS.DRIVERDOWNLOADLOG_FK_1) violated - parent key not found
]
* Vendor error code [2291]
* SQL state code [23000=INTEGRITY CONSTRAINT VIOLATION]
* Target class is 'com.via.sv.domain.DriverDownloadLog'
* PK of the target object is [id=520]
* Source object: com.via.sv.domain.DriverDownloadLog@859367
* The root stack trace is -->
* java.sql.SQLException: ORA-02291: integrity constraint (
SVTS.DRIVERDOWNLOADLOG_FK_1) violated - parent key not found

and p6spy shows
UPDATE OJB_HL_SEQ SET MAX_KEY='520',GRAB_SIZE='1',VERSION='520' WHERE
TABLENAME = 'SEQ_UserActionLog'  AND VERSION = '519'
UPDATE OJB_HL_SEQ SET MAX_KEY='519',GRAB_SIZE='1',VERSION='519' WHERE
TABLENAME = 'SEQ_UserActionLog'  AND VERSION = '518'
INSERT INTO UserActionLog
(id,machineIP,actionName,actionDate,actionDescription,userAccount) VALUES
('519','127.0.0.1','Download Driver','2006-10-12 17:16:06.875','Download
Driver','creator')
INSERT INTO DriverDownloadLog
(id,fileTile,fileName,fileSize,driverID,UserActionLogID) VALUES ('520','Bug
Report','borg.jpg','258041','80','0')


It seems that child class can not get the parent's key.
but it works fine in ojb 1.0.3
I don't know why there are errors in 1.0.4
Is it a bug for 1.0.4 ?
Or I made something wrong ?



===============================================================================
/**
 * @ojb.class
 *   table = "UserActionLog"
 *   include-inherited  = "false"
 *   determine-extents = "false"
 * @ojb.field
 *   name = "userAccount"
 *   length = "254"
 *   jdbc-type = "VARCHAR"
 */
public class UserActionLog implements Serializable {

    /**
     * @ojb.field
     *      id="1"
     *      autoincrement="ojb"
     *      jdbc-type="INTEGER"
     *   primarykey="true"
     */
    private int id;

    /**
     * @ojb.field
     *   id = "2"
     *   length = "254"
     *   jdbc-type = "VARCHAR"
     */
    private String machineIP;

    /**
     * @ojb.field
     *   id = "3"
     *   length = "254"
     *   jdbc-type = "VARCHAR"
     */
    private String actionName;

    /**
     * @ojb.field
     *   id = "4"
     *   conversion = "
org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTimestampFieldConversion"

     *   jdbc-type = "TIMESTAMP"
     *   nullable = "true"
     */
    private Date actionDate;

    /**
     * @ojb.field
     *   id = "5"
     *   length = "254"
     *   jdbc-type = "VARCHAR"
     */
    private String actionDescription;

    /**
     * @ojb.reference
     *   auto-retrieve = "true"
     *   foreignkey = "userAccount"
     *   auto-update = "link"
     *   auto-delete = "none"
     *   class-ref = "VIAUser"
     *   proxy = "false"
     */
    private VIAUser actor;

================================================================================

/**
 * @ojb.class
 *   table = "DriverDownloadLog"
 *   include-inherited  = "false"
 * @ojb.field
 *   name = "UserActionLogID"
 *   jdbc-type = "INTEGER"
 * @ojb.reference class-ref="UserActionLog"
 *      auto-retrieve="true"
 *   auto-update="object"
 *   auto-delete="object"
 *   foreignkey="UserActionLogID"
 */
public class DriverDownloadLog extends UserActionLog {

    /**
     * @ojb.field
     *      id="1"
     *      autoincrement="ojb"
     *      jdbc-type="INTEGER"
     *   primarykey="true"
     */
    private int id;

    /**
     * @ojb.field
     *   id = "2"
     *   length = "254"
     *   jdbc-type = "VARCHAR"
     */
    private String fileTile;

    /**
     * @ojb.field
     *   id = "3"
     *   length = "254"
     *   jdbc-type = "VARCHAR"
     */
    private String fileName;

    /**
     * @ojb.field
     *      id="4"
     *      jdbc-type="BIGINT"
     */
    private long fileSize;

    /**
     * @ojb.field
     *      id="5"
     *      jdbc-type="INTEGER"
     *      nullable = "false"
     */
    private int driverID;
================================================================================
        DriverDownloadLog downloadLog = new DriverDownloadLog();
        downloadLog.setActor(viaUser);
        downloadLog.setMachineIP(ip);
        downloadLog.setActionDate(new java.util.Date());
        downloadLog.setActionDescription("Download Driver");
        downloadLog.setActionName("Download Driver");
        downloadLog.setFileTile(fileTitle);
        downloadLog.setFileName(fileName);
        downloadLog.setFileSize(fileSize);
        downloadLog.setDriverID(driverID);
        try {
            getPersistenceBrokerTemplate().store(downloadLog);
        } catch (DataAccessException e) {
            logger.error(e);
            throw new DriverManagerException(e);
        }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.