Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Ids/SequenceGenerator"

(@SequenceGenerator)
m (Fixed annotation @GeneratedValue. Was @GeneratorValue)
 
(3 intermediate revisions by one other user not shown)
Line 10: Line 10:
 
}}
 
}}
 
=@SequenceGenerator=
 
=@SequenceGenerator=
If you use the [[EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Ids/GeneratedValue|@GeneratedValue]] annotation to specify a primary key generator of type <tt>SEQUENCE</tt>, then you can use the <tt>@SequenceGenerator</tt> annotation to fine-tune this primary key generator to do the following:
+
If you use the [[EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Ids/GeneratedValue|<code>@GeneratedValue</code>]] annotation to specify a primary key generator of type <tt>SEQUENCE</tt>, then you can use the <tt>@SequenceGenerator</tt> annotation to fine-tune this primary key generator to do the following:
 
* change the allocation size to match your application requirements or database performance parameters;  (this should match your database sequence <code>INCREMENT</code>)
 
* change the allocation size to match your application requirements or database performance parameters;  (this should match your database sequence <code>INCREMENT</code>)
 
* change the initial value to match an existing data model (for example, if you are building on an existing data set for which a range of
 
* change the initial value to match an existing data model (for example, if you are building on an existing data set for which a range of
Line 52: Line 52:
 
     @Id
 
     @Id
 
     @SequenceGenerator(name="Emp_Seq", allocationSize=25)
 
     @SequenceGenerator(name="Emp_Seq", allocationSize=25)
     @GeneratorValue(strategy=SEQUENCE, generator="Emp_Seq")
+
     @GeneratedValue(strategy=SEQUENCE, generator="Emp_Seq")
 
     @Column(name="EMP_ID")
 
     @Column(name="EMP_ID")
 
     public Long getId() {
 
     public Long getId() {
Line 67: Line 67:
 
     <attributes>
 
     <attributes>
 
         <id name="id">
 
         <id name="id">
 +
            <column name="EMP_ID"/>
 
             <generated-value generator="Emp_Seq" strategy="SEQUENCE"/>
 
             <generated-value generator="Emp_Seq" strategy="SEQUENCE"/>
 
             <sequence-generator name="Emp_Seq" allocationSize="25"/>
 
             <sequence-generator name="Emp_Seq" allocationSize="25"/>
            <column name="EMP_ID"/>
 
 
         </id>
 
         </id>
 
         ...
 
         ...
Line 80: Line 80:
 
{{EclipseLink_JPA
 
{{EclipseLink_JPA
 
|previous=[[EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/TableGenerator|@TableGenerator]]
 
|previous=[[EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/TableGenerator|@TableGenerator]]
|next=    [[EclipseLink/UserGuide/JPA/Basic JPA Development/Mapping/Basic_Mappings|Basic Mappings]]
+
|next=    [[EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Ids/UuidGenerator|@UuidGenerator]]
 
|up=      [[EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Creating_and_Configuring_Entities|Configuring Entities]]
 
|up=      [[EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Creating_and_Configuring_Entities|Configuring Entities]]
 
|version=2.2.0 DRAFT}}
 
|version=2.2.0 DRAFT}}

Latest revision as of 11:41, 21 November 2017

EclipseLink JPA

Eclipselink-logo.gif
EclipseLink
Website
Download
Community
Mailing ListForumsIRCmattermost
Issues
OpenHelp WantedBug Day
Contribute
Browse Source

@SequenceGenerator

If you use the @GeneratedValue annotation to specify a primary key generator of type SEQUENCE, then you can use the @SequenceGenerator annotation to fine-tune this primary key generator to do the following:

  • change the allocation size to match your application requirements or database performance parameters; (this should match your database sequence INCREMENT)
  • change the initial value to match an existing data model (for example, if you are building on an existing data set for which a range of
@SequenceGenerator Attributes
Attribute Description Default Required?
name The name of the generator must match the name of a GeneratedValue with its strategy attribute set to SEQUENCE. Yes
allocationSize An int value that must match the increment size of the database sequence object. 50 No
initialValue An int value to start all primary keys. 0 No
sequenceName A String name of the sequence SequenceGenerator.name No


The following example shows how to use this annotation to specify the allocation size for the SEQUENCE primary key generator named Emp_Seq.

Example: @SequenceGenerator
 @Entity
 public class Employee implements Serializable {
     ...
     @Id
     @SequenceGenerator(name="Emp_Seq", allocationSize=25)
     @GeneratedValue(strategy=SEQUENCE, generator="Emp_Seq")
     @Column(name="EMP_ID")
     public Long getId() {
         return id;
     }
     ...
 }
Example: Using <sequence-generator>
<entity class="Employee">
    <attributes>
        <id name="id">
            <column name="EMP_ID"/>
            <generated-value generator="Emp_Seq" strategy="SEQUENCE"/>
            <sequence-generator name="Emp_Seq" allocationSize="25"/>
        </id>
        ...
    </attributes>
</entity>


Eclipselink-logo.gif
Version: 2.2.0 DRAFT
Other versions...

Back to the top