Please do so. We'll be happy to look at the patch.
-Mike
On Dec 18, 2007 12:57 PM, Miroslav Nachev <[EMAIL PROTECTED]> wrote:
> What do you think if I register an enhancement and then attach a patch if
> the new feature which will fix this problem?
> In short I will add new enumeration in ValueStrategies. The new
> enumeration
> will be named CUSTOM or GENERIC or another name. Then I will do the
> relevant
> changes in the code. Then in the switch statement will be one more case as
> follow:
> switch (strategy)
> {
> case ValueStrategies.SEQUENCE:
> case ValueStrategies.UUID_STRING:
> case ValueStrategies.UUID_HEX:
> case ValueStrategies.CUSTOM:
> default:
> }
>
>
> Miro.
>
>
>
> On 12/18/07, Miroslav Nachev <[EMAIL PROTECTED]> wrote:
> >
> > Hi,
> >
> > From this mail I understand that the only way in OpenJPA to create
> Custom
> > Identifier is using "Sequence" like that:
> > @Id
> > @Column(name = "Data_Object_Id", nullable = false)
> > @SequenceGenerator(name="DataObjectsSeq", sequenceName="
> > test.DataObjectsGenerator")
> > @GeneratedValue(strategy=GenerationType.SEQUENCE,
> > generator="DataObjectsSeq")
> > private BigDecimal dataObjectId;
> >
> > In my test case I am using MySQL which doesn't support Sequences in
> > principal and maybe this is a problem. It seams that if the database
> doesn't
> > support Sequences it is not possible to create Generic Generated Value.
> But
> > this is not the expected behavior because it is possible to create
> > UUID_STRING and UUID_HEX which are not part of any databases. When I
> look at
> > the code I see the following code in class ImplHelper.java:
> > private static Object generateValue(StoreContext ctx, ClassMetaData
> > meta, FieldMetaData fmd, int typeCode)\
> > {
> > ...
> > switch (strategy)
> > {
> > case ValueStrategies.SEQUENCE:
> > ...
> > return JavaTypes.convert(seq.next(ctx, meta), typeCode);
> > break;
> > case ValueStrategies.UUID_STRING:
> > return UUIDGenerator.nextString();
> > case ValueStrategies.UUID_HEX:
> > return UUIDGenerator.nextHex();
> > default:
> > return null;
> > }
> > }
> >
> > When I try to create Generic Generated Value using Sequence in database
> > which doesn't support Sequences I have exception.
> > Somebody tell me that I have to use last_insert_id as follow:
> > dbDict.nextSequenceQuery = "SELECT LAST_INSERT_ID()"
> > I do that but then nobody invoke my class test.DataObjectsGenerator os
> > some of it methods.
> >
> > From the above code and my tests it seems that theoretically is not
> > possible to have custom (generic) Generated Value using database which
> > doesn't support sequences.
> > Is that a bug? Do you have any idea how to solve it?
> >
> > Finally I can replace the database with PostgreSQL but the problem will
> > not be solved and will still exists.
> >
> >
> > Regards,
> > Miro.
> >
> >
> >
> > Patrick Linskey wrote:
> >
> > If you want it to be globally available, you can make it the default
> > implementation for use by @GenerationType.SEQUENCE by specifying it in
> > the openjpa.Sequence property.
> >
> > If you want to use it in just some circumstances, or want to use
> > different configurations / instances for different types, then you can
> > set up named sequences as per the examples in the section I pointed
> > you to earlier, and then list the class name in the value. The example
> > would look like so:
> >
> > @SequenceGenerator(name="MyCustomSeq", sequence="
> fully.qualified.ClassName")
> >
> > Or, if you wanted to set some configuration options on the instance:
> >
> > @SequenceGenerator(name="MyCustomSeq",
> > sequence="fully.qualified.ClassName(InitialValue=5,BitLength=32")
> >
> > This would work provided that your class had methods called
> > setInitialValue() and setBitLength(), or public fields with those
> > names, or implemented the GenericConfigurable interface.
> >
> > Similarly, the syntax for specifying a sequence globally via the
> > openjpa.Sequence setting would look like so:
> >
> > <property name="openjpa.Sequence" value="fully.qualified.ClassName"/>
> >
> > OpenJPA configuration settings that can implement a particular
> > interface use this format plus more-friendly aliases quite frequently.
> >
> > -Patrick
> >
> > On Nov 5, 2007 1:21 PM, Miroslav Nachev <[EMAIL PROTECTED]> <
> [EMAIL PROTECTED]> wrote:
> >
> > The implementation of Seq interface is the easiest part of the task. I
> can
> > not see how to configure JPA to use my Seq implementation instead of the
> > standard. Can I do that with annotation or I have to use another tricks?
> >
> >
> > Miro.
> >
> > On 11/5/07, Patrick Linskey <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
> wrote:
> >
> > Gotcha. To do that, you'll need to implement the
> > org.apache.openjpa.kernel.Seq interface. Take a look at the docs [1]
> > for details. That section of the docs also has some examples that
> > should help you use your custom sequence.
> >
> > [1]
> >
> http://openjpa.apache.org/docs/latest/manual/manual.html#ref_guide_sequence
> >
> > -Patrick
> >
> > On Nov 5, 2007 1:01 PM, Miroslav Nachev <[EMAIL PROTECTED]> <
> [EMAIL PROTECTED]> wrote:
> >
> > No. I want to have my own class with which to generate the Ids.
> > For example I have binary(32) field which is the Primary Key. I would
> >
> > like
> >
> > to generate the values for this PK in my own way.
> >
> >
> > Miro.
> >
> >
> > On 11/5/07, Patrick Linskey <[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
> wrote:
> >
> > Hi,
> >
> > Can you describe what you mean by a "generic" GeneratedValue? Do you
> > mean that you'd like to use the @GeneratedValue annotation on
> > non-identity fields? If so, then that is possible in OpenJPA.
> >
> > -Patrick
> >
> > On Nov 5, 2007 12:08 PM, Miroslav Nachev <[EMAIL PROTECTED]> <
> [EMAIL PROTECTED]> wrote:
> >
> > Hi,
> >
> > Is there any way to have Generic GeneratedValue in OpenJPA. I know
> >
> > that
> >
> > this
> >
> > is possible in Hibernate JPA but I would like to use OpenJPA if is
> >
> > possible.
> >
> > Any suggestions?
> >
> >
> > Regards,
> > Miro.
> >
> > --
> > Patrick Linskey
> > 202 669 5907
> >
> > --
> > Patrick Linskey
> > 202 669 5907
> >
> >
> >
> >
>