Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Ids/SequenceGenerator"
< EclipseLink | UserGuide | JPA | Basic JPA Development
m (→@SequenceGenerator Annotation) |
m (Fixed annotation @GeneratedValue. Was @GeneratorValue) |
||
(23 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | =@SequenceGenerator | + | {{EclipseLink_UserGuide |
− | If you use the [[EclipseLink/UserGuide/JPA/Basic JPA Development/ | + | |info=y |
− | * change the allocation size to match your application requirements or database performance parameters; | + | |toc=n |
+ | |eclipselink=y | ||
+ | |eclipselinktype=JPA | ||
+ | |api=y | ||
+ | |apis= | ||
+ | *[http://www.eclipse.org/eclipselink/api/latest/javax/persistence/GeneratedValue.html @GeneratedValue] | ||
+ | *[http://www.eclipse.org/eclipselink/api/latest/javax/persistence/SequenceGenerator.html @SequenceGenerator] | ||
+ | }} | ||
+ | =@SequenceGenerator= | ||
+ | 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 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 | ||
+ | {{EclipseLink_AttributeTable | ||
+ | |caption=@SequenceGenerator Attributes | ||
+ | |content= | ||
+ | <tr> | ||
+ | <td>'''<tt>name</tt>'''</td> | ||
+ | <td>The name of the generator must match the name of a <tt>GeneratedValue</tt> with its <tt>strategy</tt> attribute set to <tt>SEQUENCE</tt>.</td> | ||
+ | <td></td> | ||
+ | <td>Yes</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>'''<tt>allocationSize</tt>'''</td> | ||
+ | <td>An <tt>int</tt> value that must match the increment size of the database sequence object.</td> | ||
+ | <td>50</td> | ||
+ | <td>No</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>'''<tt>initialValue</tt>'''</td> | ||
+ | <td>An <tt>int</tt> value to start all primary keys.</td> | ||
+ | <td>0</td> | ||
+ | <td>No</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>'''<tt>sequenceName</tt>'''</td> | ||
+ | <td>A <tt>String</tt> name of the sequence</td> | ||
+ | <td><tt>SequenceGenerator.name</tt></td> | ||
+ | <td>No</td> | ||
+ | </tr> | ||
+ | }} | ||
− | The | + | The following example shows how to use this annotation to specify the allocation size for the <tt>SEQUENCE</tt> primary key generator named <tt>Emp_Seq</tt>. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ======'' Example: @SequenceGenerator''====== | |
− | + | ||
− | + | ||
− | '' | + | |
<source lang="java"> | <source lang="java"> | ||
@Entity | @Entity | ||
Line 20: | Line 51: | ||
... | ... | ||
@Id | @Id | ||
− | @SequenceGenerator(name=" | + | @SequenceGenerator(name="Emp_Seq", allocationSize=25) |
− | @ | + | @GeneratedValue(strategy=SEQUENCE, generator="Emp_Seq") |
− | @Column(name=" | + | @Column(name="EMP_ID") |
public Long getId() { | public Long getId() { | ||
return id; | return id; | ||
Line 30: | Line 61: | ||
</source> | </source> | ||
+ | ======''Example: Using <code><nowiki><sequence-generator></nowiki></code>''====== | ||
− | + | <source lang="xml"> | |
+ | <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> | ||
+ | </source> | ||
{{EclipseLink_JPA | {{EclipseLink_JPA | ||
− | |previous=[[EclipseLink/UserGuide/JPA/ | + | |previous=[[EclipseLink/UserGuide/JPA/Basic_JPA_Development/Entities/Ids/TableGenerator|@TableGenerator]] |
− | |next= [[EclipseLink/UserGuide/JPA/Basic JPA Development/ | + | |next= [[EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Ids/UuidGenerator|@UuidGenerator]] |
− | |up= [[EclipseLink/UserGuide/JPA/Basic JPA Development/ | + | |up= [[EclipseLink/UserGuide/JPA/Basic JPA Development/Entities/Creating_and_Configuring_Entities|Configuring Entities]] |
− | |version= 2. | + | |version=2.2.0 DRAFT}} |
− | }} | + |
Latest revision as of 11:41, 21 November 2017
EclipseLink JPA
EclipseLink | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
Key API
@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
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>