openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Linskey (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (OPENJPA-469) Generic (user, custom) GeneratedValue
Date Sat, 22 Dec 2007 15:01:43 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Patrick Linskey resolved OPENJPA-469.
-------------------------------------

    Resolution: Duplicate

> Generic (user, custom) GeneratedValue
> -------------------------------------
>
>                 Key: OPENJPA-469
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-469
>             Project: OpenJPA
>          Issue Type: New Feature
>          Components: jdbc, kernel
>    Affects Versions: 1.1.0
>         Environment: The database is MySQL which in principle doesn't support sequences.
JDK 1.5 is used as and JDK6. For the test case JDK1.5.
>            Reporter: Miroslav Nachev
>            Priority: Critical
>             Fix For: 1.1.0
>
>
> I am trying to create a Custom (generic, user) Sequence Generator following the instructions
from Patrick Linskey:
>     @Id
>     @Column(name = "Data_Object_Id", nullable = false)
>     @SequenceGenerator(name="DataObjectsSeq", sequenceName="test.DataObjectsGenerator")
>     @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="DataObjectsSeq")
>     private BigDecimal dataObjectId;
> Unfortunately this doesn't works in my case maybe because I am using database which in
principle doesn't support sequences or another reason. I dig up the code and see that there
is incorrectly logic 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;
>         }
>     }
> In my opinion the problem is that when I am creating a custom sequence, in switch statement
this custom sequence is treat as native database sequence. This is a general problem. The
correct behavior in this sequence to be treat as custom sequences as UUID_STRING and UUID_HEX.
To be fixed that problem I will create a new enumeration which 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 with one more case as follow:
>         switch (strategy)
>         {
>              case ValueStrategies.SEQUENCE:
>                  ...
>                  break;
>              case ValueStrategies.UUID_STRING:
>                  ...
>                  break;
>              case ValueStrategies.UUID_HEX:
>                  ...
>                  break;
>              case ValueStrategies.CUSTOM:
>                  return JavaTypes.convert(seq.next(ctx, meta), typeCode);
>              default:
>                  ...
>                  break;
>         }
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message