如果您想生成多個持久對象之間共享(和唯一)的ID,請使用@TableGenerator。 H2和許多其他數據庫沒有序列的內部支持,所以@SequenceGenerator不起作用。
這裏有一個簡單的例子,有一個獨特的/在兩個對象共享@Id:
@Entity
public class Class1 {
// setting pkColumnValue of TableGenerator is very important ;-)
@Id
@TableGenerator(
name = "guid",
initialValue = 0,
allocationSize = 10,
table = "GUID_SEQ",
pkColumnName = "GEN_KEY",
valueColumnName = "GEN_VALUE",
pkColumnValue = "GUID")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
private long id;
}
@Entity
public class Class2 {
// use the same pkColumnValue
@Id
@TableGenerator(
name = "guid",
initialValue = 0,
allocationSize = 10,
table = "GUID_SEQ",
pkColumnName = "GEN_KEY",
valueColumnName = "GEN_VALUE",
pkColumnValue = "GUID")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
private long id;
}
DB是否使用的是
? – joel1di1 2012-03-28 14:46:41
H2數據庫。生成器類=「增量」工作在純休眠 – bunnyjesse112 2012-03-28 14:48:11