[hibernate-dev] IdentifierGenerator, which *may* implement PostInsertIdentifierGenerator

Jochen Wiedmann jochen.wiedmann at gmail.com
Sun Dec 6 08:53:29 EST 2009


Hello, Steve,

yes the answer for "why native?" is portability, indeed.

Could you please enlighten me, what the "enhanced" generators
precisely are and why they would fix my problem? At least, I don't
find the term "enhanced" in the IdentifierGeneratorFactory and neither
of the classes implementing IdentiferGenerator in the hibernate
sources contain it.

Thanks,

Jochen


On Fri, Dec 4, 2009 at 4:30 PM, Steve Ebersole <steve at hibernate.org> wrote:
> First I have to ask 'why native?'.  Doing this with the native generator
> will present you with an interesting challenge of how you handle
> IDENTITY or other post-insert style generation.  post-insert means after
> the insert has happened, so how would you be adding your prefix?  And
> even if you answer that, generally speaking columns defined as IDENTITY
> are not eligible for update.
>
> If the answer to 'why native?' is portability, then why not use the
> "enhanced" generators.  These are intended for portability in a much
> better way then native was.
>
> On Fri, 2009-12-04 at 08:50 +0100, Jochen Wiedmann wrote:
>> Hi,
>>
>> for some particular project, I'd like to have a custom
>> IdentifierGenerator, which could be thought of as an extension of the
>> "native" IdentifierGenerator. Basically, it ought to take the id
>> generated by the "native" generator, but then do some magic with it,
>> for example add a prefix. (Yes, I know, don't push me on that, I have
>> already lost my struggle against a "telling ID".)
>>
>> Such an IdGenerator is easily implemented: Create a class, which
>> queries the IdentifierGeneratorFactory for the "native"
>> IdentifierGenerator and use that. (Works fine.)
>>
>> The problem is, that the "native" generator is sometimes implementing
>> PostInsertIdentifierGenerator. Of course, I can have my generator
>> implement PostInsertIdentifierGenerator as well, but that means that
>> it will break on systems without a sequence. OTOH, I can remove the
>> interface, but then it won't work on the other systems.
>>
>> An alternative might be, to add a new "myNative" term to the
>> IdentifierGeneratorFactory, but that class neither allows extension
>> (it's final, for whatever reason) nor does it support extending the
>> map of builtin types.
>>
>> Any ideas?
>>
>> Thanks,
>>
>> Jochen
>>
>>
> --
> Steve Ebersole <steve at hibernate.org>
> Hibernate.org
>
>



-- 
Germanys national anthem is the most boring in the world - how telling!




More information about the hibernate-dev mailing list