Hi,

Armin Waibel wrote:

We encountered a problem with the SequenceManagerTransientImpl.  We have
two objects that are related; bank account has a bank on it.  A key to
the bank account table has a custom FieldConversion implementation for
encryption/decryption associated with it.  When we refresh the
references on a new bank account, OJB goes to retrieve the bank and uses
SequenceManagerTransientImpl to initialize any null keys on bank account
with a unique value.  However, after SequenceManagerTransientImpl
returns a long > 1000, AbstractSequenceManager calls the sqlToJava
method on the custom FieldConversion (in the getUniqueLong method).  The
custom FieldConversion bombs, because it's being asked to unencrypt and
already unencrypted value.  So, we overrode getUniqueValue in
SequenceManagerTransientImpl as follows...
    public Object getUniqueValue(FieldDescriptor field) throws
SequenceManagerException
    {
        return field.getJdbcType().sequenceKeyConversion(new
Long(getUniqueLong(field)));
        // perform a sql to java conversion here, so that clients do
        // not see any db specific values
        // abyrne commented out: result =
field.getFieldConversion().sqlToJava(result);
        // abyrne commented out: return result;
    }
We would appreciate your feedback on whether or not this seems
problematic.

The conversion is already done in the super-class
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/util/sequence/AbstractSequenceManager.java?view=markup
See method #getUniqueValue(...)
This method is called by OJB to lookup the next key.


Damn stupid! Sorry I don't carefully read your question (seems responses written after midnight doesn't contain useful information ;-)).

I think it could be problematic to comment out the field conversion. For example, if someone use a long-->String field conversion (with some other modification) for the PK field it's necessary to convert the temporary values.

Isn't it possible to differ these temporary values in your field conversion implementation?

Would it be useful to make SequenceManagerTransient pluggable, e.g. in the jdbc-connection-descriptor? In this case you could easily use a modified version.

regards,
Armin

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

Reply via email to