Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] How to use QuerySequence of eclipselink

This should be possible.  In your SessionCustomizer just set the sequence to
an instance of QuerySeqeunce and set the selectQuery (setSelectQuery) to an
instance of ValueReadQuery that uses a StoredProcedureCall.


shivsingh.06nov wrote:
> 
> Hi Andrei,
> 
> Thanks for your reply. I want to use stored procedure to generate id for
> me. I want to pass sequence name to it and stored procedure would use it
> for generating the sequence id.
> Is it possible to create custom ID generator that can call stored
> procedure for generating value for id field?
> 
> Regards,
> Shivendra
> 
> Andrei Ilitchev wrote:
>> 
>> QuerySequence is a base class for TableSequence and NativeSequence -
>> classes 
>> used to support JPA TableGenarator and SequenceGenerator/Identity.
>> 
>> To define customized database sequence I would first look at overriding 
>> NativeSequence (not QuerySequence).
>> 
>> To assign custom sequence to entity I would use SequenceGenerator.
>> 
>> @Entity
>> public class Address {
>>     ...
>>     @GeneratedValue(generator="ADDRESS_SEQ")
>> 
>>     @SequenceGenerator(name="ADDRESS_SEQ", allocationSize=25)
>> 
>>     @Column(name="ADDRESS_ID")
>> 
>>     public int getId() {
>> 
>>         return id;
>> 
>>     }
>> ...
>> }
>> 
>> 
>> Then in SessionCustomizer substitute the original sequence for the
>> customary 
>> one:
>> 
>> public class MyCustomizer implements SessionCustomizer {
>> 
>> public void customize(Session session) {
>> 
>>     Sequence originalSequence = 
>> session.getPlatform().getSequence("ADDRESS_SEQ");
>> 
>>     session.getPlatform().addSequence(MySequence("ADDRESS_SEQ", 
>> originalSequence.getPreallocationSize()));
>> 
>> }
>> 
>> 
>> MyCustomizer class should be packed with the rest of the persistence unit 
>> (into the same jar with entity classes)
>> and should be listed in the properties in persistence.xml (or properies 
>> passed to createEntityManagerFactory):
>>         <properties>
>>             ...
>>             <property name="eclipselink.session.customizer" 
>> value="MyCustomizer"/>
>>         </properties>
>> 
>> 
>> 
> 
> 


-----
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland 
http://www.eclipse.org/eclipselink/
 EclipseLink ,  http://www.oracle.com/technology/products/ias/toplink/
TopLink 
Wiki:  http://wiki.eclipse.org/EclipseLink EclipseLink , 
http://wiki.oracle.com/page/TopLink TopLink 
Forums:  http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink , 
http://www.nabble.com/EclipseLink-f26430.html EclipseLink 
Book:  http://en.wikibooks.org/wiki/Java_Persistence Java Persistence 
-- 
View this message in context: http://www.nabble.com/How-to-use-QuerySequence-of-eclipselink-tp24931901p25046445.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top