我使用@GeneratedValue(strategy = GenerationType.AUTO)在我的实体上生成ID。oracle上的休眠序列,@GeneratedValue(strategy = GenerationType.AUTO)
我现在不知道它是如何工作的,但在我的子表上,生成了遵循父顺序的ID值。
//parent table
@Entity
@Table (name = "parent")
public class Parent {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private long id;
@OneToMany (cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinColumn (name = "parentId")
@ForeignKey (name = "FKparent")
private List<child> child;
}
//child table
@Entity
@Table (name = "child")
public class Child {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private long id;
}
在父级上插入的ID值更新序列。 孩子上插入的ID值,更新序列。 对于父代的下一个插入,序列...使用由子插入更新的值...
此批注不创建两个序列,只有一个。这是正确的/预期的?
我插入我的实体吾道服务只使用entityManager.persist(parent);
若最终用户看到该密钥和由它被误导“神经质”。不要告诉我,关键需要隐藏的用户,这并不总是可能的... – Monoman 2012-02-27 18:54:35
有没有办法保持ids恒定的时间和单调,没有漏洞的序列,这并不杀可扩展性。我也没有看到'jumpy'的有用定义以及为什么用户需要unjumpy ID。 – 2012-02-28 06:48:24