I know it is possible when A and B1 are mapped to one table.  Not sure about
when they are mapped to two tables.  I would hope both would work since the
only difference is in the mapping layer.

When they are mapped to one table...
1) Grab the A instance.
2) Create an instance of B1 and copy all attributes from the A instance.
3) Fill in B1 attributes.
4) Store.

Later.
Mitch

-----Original Message-----
From: Matt Mastrangelo [mailto:[EMAIL PROTECTED]
Sent: Tuesday, October 21, 2003 8:45 AM
To: OJB Users List
Subject: Re: Inheritance mapping, storing new object associated with
pre-existingsuper object


Hi Gerhard,

I'm not saying the B1 and B2 instances should extend the same instance 
of A, but that they should be materialized from the same A record in the 
database.  B1 and B2 would have to be different objects obviously.  I 
think this could be quite possible in OJB.

But let me ask the question a different way - suppose I have an instance 
of A that already exists.  Now I want to create a B1 instance that is 
associated with the already existing A instance.  So I don't want a new 
A record to be created, only new B1 record that "extends" the 
pre-existing A record.  Is that possible?

Thank you for your input.

Matt

Gerhard Grosse wrote:

>Hi Matt,
>
>Excuse me to jump in here, but I believe what you have in mind is not
>possible in Java and even less with OJB. If your B1 and B2 instance
>should 'contain' the same A instance as base class, they are identical
>objects, which would require a language that supports multiple
>inheritance (and virtual base classes). You could do that in in C++
>but not in Java. 
>
>What you can do in Java (and OJB) is declare an interface I_A
>implemented by A, B1 and B2. I_A just declares all public methods of A
>and in B1 and B2 you implement this interface by delegation. That is
>in B1 and B2 you have a reference to a A object and all I_A methods on
>B1 and B2 are just routed to this reference. That way distinct
>instances of B1 and B2 can easily share a common A reference.
>
>HTH,
>Gerhard
>
>On Tue, 21 Oct 2003 00:27:02 -0400, Matt Mastrangelo
><[EMAIL PROTECTED]> wrote:
>
>  
>
>>Chris,
>>
>>Just to clarify -- are you saying it's not possible to create the User 
>>instance without also creating a new Person instance?  Maybe my example 
>>was not too clear.   Let me re-explain:
>>
>>I have a base class A with two subclasses, B1 and B2.  I have already 
>>created an instance of B1 and stored it to the database, which means 
>>that an A record and a B1 record were inserted.  I now want to create an 
>>instance of B2 that extends from the same A record as B1.  Is this
possible?
>>
>>Thanks again.
>>
>>Matt
>>
>>[EMAIL PROTECTED] wrote:
>>
>>    
>>
>>>Matt,
>>>
>>>I believe since the Person and Student object exist it will set there
>>>values to null except the personId.  Because in the User instance you are
>>>storing allthe other fields are null (if you set them to null when you
>>>declare them) except the loginName.  So, ojb will know that person and
>>>student 001 exist and will do and update instead of an insert.
>>>
>>>You should create them on the first store.  Or do not have user extend
>>>Student, instead have a 1:1 relationship.  Depends on your requirments i
>>>guess.
>>>
>>>-chris worley
>>>
>>> 
>>>
>>>      
>>>
>>>>I'm trying to figure out how to store a new persisted object that
>>>>extends a pre-existing object.
>>>>
>>>>For example, I have 3 classes: Person, Student, and User.  Student and
>>>>User extend Person.  A Student object already exists, and I now want to
>>>>create a User object that inherits from the same Person as the Student
>>>>object.  Is this possible?  Here's a code example:
>>>>
>>>>User user = new User();
>>>>user.setLoginName("matt");
>>>>user.setPersonOid("001"); // A pre-existing person
>>>>
>>>>broker.beginTransaction();
>>>>broker.store(user);
>>>>broker.commitTransaction();
>>>>
>>>>The result of the above code is a NEW empty person object being created
>>>>with a newly generated OID (via a sequence).  How can I associate the
>>>>new User with a pre-existing Person?
>>>>
>>>>Thanks again.
>>>>
>>>>Matt
>>>>
>>>>
>>>>
>>>>---------------------------------------------------------------------
>>>>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]
>>>
>>>
>>> 
>>>
>>>      
>>>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>  
>

-- 
Matt Mastrangelo
X2 Development Corporation
781-740-2679




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
----------------------------------
The information contained in this e-mail message is intended only for the
personal and confidential use of the recipient(s) named above. If the reader
of this message is not the intended recipient or an agent responsible for
delivering it to the intended recipient, you are hereby notified that you
have received this communication in error and that any review,
dissemination, distribution, or copying of this message is strictly
prohibited. If you have received this communication in error, please notify
us immediately by e-mail, and delete the original message.

Reply via email to