Reputation: 3679
I wanted to to generate sequence using hibernate tool ( pojo to sql). And definitely it works fine.
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqid-gen")
@SequenceGenerator(name = "seqid-gen", sequenceName = "RTDS_ADSINPUT_SEQ" )
@Column(name="id")
public Long getId() {
return id;
}
This code generates below sql
create sequence RTDS_ADSINPUT_SEQ;
The problem is I wanted to specify properties like
INCREMENT BY,NOCACHE CYCLE
and the final ddl script should be some thing like below
CREATE SEQUENCE RTDS_ADSINPUT_SEQ MINVALUE 1 MAXVALUE
999999999999999999 INCREMENT BY 1 START WITH 1 NOCACHE ORDER CYCLE ;
But as far I saw hibernate only support name, sequncename,allocation,initialvalue
Please advice me if I can include those properties as annotation in the pojo.
Upvotes: 10
Views: 11684
Reputation: 868
I think you are looking for something like this
<id name="pk_field" column="column_name">
<generator class="sequence">
<param name="sequence">sequence_name</param>
<param name="parameters">START WITH 5 INCREMENT BY 10</param>
</generator>
</id>
Upvotes: 0
Reputation: 1541
I looked it up in the Hibernate sources (4.2.7). It is not possible to specify this with an annotation (neither JPA nor Hibernate).
However you can provide your own Dialect to achieve this.
public class MyOwnOracleDialect extends Oracle10gDialect {
@Override
protected String getCreateSequenceString(final String sequenceName, final int initialValue, final int incrementSize)
throws MappingException {
String createSequenceString = super.getCreateSequenceString(sequenceName, initialValue, incrementSize);
return createSequenceString + " NOCACHE ORDER CYCLE"; // modify this string as you like
}
}
Have an entity like this
@Entity
public class MyEntity {
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqid-gen")
@SequenceGenerator(name = "seqid-gen", sequenceName = "RTDS_ADSINPUT_SEQ", allocationSize = 1, initialValue = 0)
@Column(name="id")
private Long id;
// ...
}
You can set your new Dialect as described in the Hibernate doc (http://docs.jboss.org/hibernate/orm/4.2/manual/en-US/html/ch03.html#configuration-optional-dialects)
Upvotes: 7