Use sequence generator that gets its ids from a sequence table. Something like this:
@Id
@GeneratedValue(generator = "yourTableIdGenerator")
@GenericGenerator(name = "yourTableIdGenerator", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", parameters = {
@Parameter(name = "sequence_name", value = "your_table_id_seq"),
@Parameter(name = "optimizer", value = "hilo"),
@Parameter(name = "initial_value", value = "1000"),
@Parameter(name = "increment_size", value = "10") }
)
@Column(name = "your_table_id", length = 15)
public Long getId() {
return id;
}
Set the initial_value to a value larger than the maximum id of the rows populated from the script.
From the java 6 ee api: http://download.oracle.com/javaee/6/api/javax/persistence/TableGenerator.html
@TableGenerator(
name="empGen",
table="ID_GEN",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="EMP_ID",
initialValue = 1000,
allocationSize=1)
@Id
@GeneratedValue(strategy=TABLE, generator="empGen")
int id;