Yes, with parentheses everything is working. Thanks.
Tomorrow I will check again.
Miro.
On 12/19/07, Patrick Linskey <[EMAIL PROTECTED]> wrote:
>
> See OPENJPA-470. I'm not sure how to resolve this, short of adding a
> new annotation.
>
> -Patrick
>
> On Dec 19, 2007 7:42 AM, Miroslav Nachev <[EMAIL PROTECTED]> wrote:
> >
> > Hi,
> >
> >
> > Additionally, I would expect things to work if you did
> > @GeneratedValue(strategy=GenerationType.SEQUENCE,
> > generator="test.DataObjectsGenerator").
> >
> > Have you tried the latter combination?
> >
> > Yes, just now I tried. The result is not good:
> > <openjpa-1.1.0-SNAPSHOT-r420667:603666M fatal store error>
> > org.apache.openjpa.persistence.RollbackException: Could not locate the
> > sequence with name "test.DataObjectsGenerator". It is possible that the
> > metadata file containing the sequence has not been parsed yet. Make
> sure to
> > use a persistent class whose metadata is in the same file somewhere in
> your
> > application before requesting the sequence.
> > at
> > org.apache.openjpa.persistence.EntityManagerImpl.commit(
> EntityManagerImpl.java:490)
> > ...
> > Caused by: <openjpa-1.1.0-SNAPSHOT-r420667:603666M fatal user error>
> > org.apache.openjpa.persistence.ArgumentException: Could not locate the
> > sequence with name "test.DataObjectsGenerator". It is possible that the
> > metadata file containing the sequence has not been parsed yet. Make
> sure to
> > use a persistent class whose metadata is in the same file somewhere in
> your
> > application before requesting the sequence.
> > at
> > org.apache.openjpa.meta.MetaDataRepository.getSequenceMetaData(
> MetaDataRepository.java:1726)
> > ...
> >
> >
> > Miro.
> >
> >
> >
> > Patrick Linskey wrote:
> > Hi,
> >
> > I would roughly expect your example to work as-is, given the code in
> > MetaDataRepository and ClassMetaData.
> >
> > Additionally, I would expect things to work if you did
> > @GeneratedValue(strategy=GenerationType.SEQUENCE,
> > generator="test.DataObjectsGenerator").
> >
> > Have you tried the latter combination?
> >
> > -Patrick
> >
> > On Dec 18, 2007 11:16 AM, 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]> 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]> 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]> 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]> 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]> 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
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
>
>
> --
> Patrick Linskey
> 202 669 5907
>