Hi Julia,

SequenceManagerMySQLImpl is based on Identity columns
and is not extent aware (using different tables for extents, see
javadoc)
> ----------  ----------  ---------
> | PingVO |  | HttpVO |  | RmiVO |
> ----------  ----------  ---------
The generated ids must be unique across these three tables. When
using Identity columns they aren't.
If possible don't use Identity columns. The OJB concept of using
Identity objects of persistent objects (OJB handle unique
Identity objects of persistent objects before they writen in
the database) clash a bit with the DB identity
column concept. Let OJB handle the id generation
by using another sequence manager implementation
http://db.apache.org/ojb/sequencemanager.html
Or use the same table for PingVO, ... objects - but keep in
mind SequenceManagerMySQLImpl is "Not thoroughly tested"
and a little bit outdated.

With the next release (current CVS) you can find a new SequenceManager
implementation SequenceManagerNativeImpl which supports native identity
columns (replacement for outdated SequenceManagerMySQLImpl). But this
implementation isn't extent aware too.

regards,
Armin

----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, July 14, 2003 9:46 AM
Subject: autoincrement + cache


> Hello!
>
> I have a little more complex problem when inserting objects. I'm not
sure
> wheter it has to do with my primary keys (some anonymous) or maybe
with the
> sequence manager or cache I'm using. I'll try to describe:
>
> I have a class ServerVO with an entryID (implemented already in that
class).
> It has a 1:1 association (reference descriptor) to the class
ModulesVO.
> ModulesVO holds a List (1:n) of classes of the type ModuleVO which has
> already implemented an moduleId. ModuleVO is extended by three further
> classes (PingModuleVO, HtppModuleVO, RmiModuleVO). It looks like this:
>
>         ---------------
>     | ServerVO    |
>     | int entryId |
>     ---------------
>     |1
>     |
>     |1
>     ------------
>     | ModulesVO |
>     -------------
>     |1
>     |
>     |n
>     ----------------
>     | ModuleVO     |
>     | int moduleId |
>     ----------------
>     |
> -----------------------
> |     |           |
> ----------  ----------  ---------
> | PingVO |  | HttpVO |  | RmiVO |
> ----------  ----------  ---------
>
> I have entered in my repository an anonymous field as PK for ModulesVO
> (autoincrement="true" primarykey="true" access="anonymous", see
repository
> below). But it does not increment in the way I expect.
> The first stored entry works fine. ModulesVO gets the annonymous id
'0'
> (referenced in ServerVO). When I want to store the next entry there is
only
> created an SQL statement that inserts a row for my ServerVO but
nothing more
> (not for ModulesVO and so on). This next entry gets also a reference
to the
> same ModulesVO as before!! I never get more then one entry in the
table
> ModulesVO!
>
> But the strange thing is, that the table content does not correspond
with
> the content I get when I look it up with a query! That means OJB shows
me
> content that isn't in the database! Of cause not if I restart my
apllication
> server. Then the entered data is lost. I also tried to change the
cache from
> ObjectCacheDefaultImpl to ObjectCacheEmptyImpl but that didn't change
a
> thing! I hope it is something simple. Or maybe my repository is wrong
or the
> Sequence manager I'm using? I hope I explained everything
comprehensible.
>
> Julia.
>
>
> <jdbc-connection-descriptor
> jcd-alias="default"
> default-connection="true"
> platform="MySQL"
> jdbc-level="2.0"
> jndi-datasource-name="java:DemoAppsDB"
> username="monitor"
> password="password"
> eager-release="false"
> batch-mode="false"
> useAutoCommit="2"
> ignoreAutoCommitExceptions="false">
> <sequence-manager
>
className="org.apache.ojb.broker.util.sequence.SequenceManagerMySQLImpl"
/>
> </jdbc-connection-descriptor>
>
>
>
> <class-descriptor
> class="de.arvatosystems.monitoring.business.vo.server.ServerVO"
> table="SERVERVO">
> <field-descriptor name="entryId" column="ID" jdbc-type="INTEGER"
> primarykey="true" autoincrement="false"/>
> <field-descriptor name="locale" column="LOCALE" jdbc-type="VARCHAR"
> primarykey="true" autoincrement="false"/>
> /* some attributes */
> <field-descriptor name="modulesId" column="MODULESID"
> jdbc-type="INTEGER" primarykey="true"
> autoincrement="true" access="anonymous"/>
> <reference-descriptor name="modules"
> class-ref="de.arvatosystems.monitoring.business.vo.module.ModulesVO">
> <foreignkey field-ref="modulesId"/>
> </reference-descriptor>
> </class-descriptor>
>
> <class-descriptor
> class="de.arvatosystems.monitoring.business.vo.module.ModulesVO"
> table="MODULESVO">
> <field-descriptor name="Id" column="ID" jdbc-type="INTEGER"
> autoincrement="true" primarykey="true" access="anonymous"/>
> <collection-descriptor name="modules"
>
element-class-ref="de.arvatosystems.monitoring.business.vo.module.Module
VO"
> orderby="moduleId" sort="ASC">
> <inverse-foreignkey field-ref="Id"/>
> </collection-descriptor>
> </class-descriptor>
>
> <class-descriptor
> class="de.arvatosystems.monitoring.business.vo.module.ModuleVO"
> table="MODULEVO">
> <extent-class
>
class-ref="de.arvatosystems.monitoring.business.vo.module.PingModuleVO"/
>
> <extent-class
>
class-ref="de.arvatosystems.monitoring.business.vo.module.HttpModuleVO"/
>
> <extent-class
>
class-ref="de.arvatosystems.monitoring.business.vo.module.RmiModuleVO"/>
> <field-descriptor name="Id" column="ENTRYID" jdbc-type="INTEGER"
> access="anonymous"
> primarykey="true" autoincrement="true"/>
> <field-descriptor name="moduleId" column="MODULEID"
> jdbc-type="INTEGER" primarykey="true" autoincrement="false"/>
> /* some attributes */
> </class-descriptor>
>
> <class-descriptor
> class="de.arvatosystems.monitoring.business.vo.module.PingModuleVO"
> table="PINGMODULEVO">
> <field-descriptor name="Id" column="ENTRYID" jdbc-type="INTEGER"
> access="anonymous"
> primarykey="true" autoincrement="true"/>
> <field-descriptor name="moduleId" column="MODULEID"
> jdbc-type="INTEGER" primarykey="true" autoincrement="false"/>
> /* some attributes */
> </class-descriptor>
>
> <class-descriptor
> class="de.arvatosystems.monitoring.business.vo.module.HttpModuleVO"
> table="HTTPMODULEVO">
> <field-descriptor name="Id" column="ENTRYID" jdbc-type="INTEGER"
> access="anonymous"
> primarykey="true" autoincrement="true"/>
> <field-descriptor name="moduleId" column="MODULEID"
> jdbc-type="INTEGER" primarykey="true" autoincrement="false"/>
> /* some attributes */
> </class-descriptor>
>
> <class-descriptor
> class="de.arvatosystems.monitoring.business.vo.module.RmiModuleVO"
> table="RMIMODULEVO">
> <field-descriptor name="Id" column="ENTRYID" jdbc-type="INTEGER"
> access="anonymous"
> primarykey="true" autoincrement="true"/>
> <field-descriptor name="moduleId" column="MODULEID"
> jdbc-type="INTEGER" primarykey="true" autoincrement="false"/>
> /* some attributes */
> </class-descriptor>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to