之間共享我有一個「狗」 Entitiy與@Id和@TableGeneratorJPA @TableGenerator多個實體
...
@TableGenerator(table = "seq", name = "dog_gen", pkColumnName = "seq_name", valueColumnName="seq_val")
@Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "dog_gen")
private Long id;
...
有沒有辦法重用在其他實體在同一臺發電機(dog_gen)?我想保持在兩個獨立的實體相同的id序列,說
狗= 1, 狗= 2, 狗= 3, 貓= 4, 貓= 5, 狗= 6 等...
這兩個實體都不共享一個公共超類來實現某種帶有id屬性的繼承。
如果我在我的cat實體上添加@GeneratedValue(generator =「dog_gen」),省略@TableGenerator聲明會拋出一個Exception,表示它在啓動上下文時找不到生成器。
Caused by: org.hibernate.AnnotationException: Unknown Id.generator: dog_gen
at org.hibernate.cfg.BinderHelper.makeIdGenerator(BinderHelper.java:413)
at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1795)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1229)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:733)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:498)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:277)
我想它...它似乎只是爲了工作,因爲分配大小爲1。但實際上,獨立發電機被創建並單獨工作。如果您選擇大於1的分配大小,您將看到每個實體都有不同的id範圍。 (在這裏使用Hibernate 3.6,或許它對4.x更好?) – 2013-08-16 13:58:29