You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Armin Waibel <ar...@apache.org> on 2006/10/13 01:06:15 UTC
[Fwd: Inheritance problem(migrate from 1.0.3 to 1.0.4)]
-------- Original Message --------
Subject: Inheritance problem(migrate from 1.0.3 to 1.0.4)
Date: Thu, 12 Oct 2006 17:47:31 +0800
From: Ohara Su <oh...@gmail.com>
To: arminw@apache.org
Hi
I can not find the way to join mail list.
Please forward it to the mail list.
I read http://db.apache.org/ojb/docu/guides/advanced-technique.html
<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 <http://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);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org