Java 当为@Id使用继承的表生成器时,DataNucleus(JPA)是否支持每个实体的序列?
基本上,我想要一个@MappedSuperclass,它为所有扩展实体定义代理id生成:Java 当为@Id使用继承的表生成器时,DataNucleus(JPA)是否支持每个实体的序列?,java,jpa,datanucleus,Java,Jpa,Datanucleus,基本上,我想要一个@MappedSuperclass,它为所有扩展实体定义代理id生成: @MappedSuperclass public class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.TABLE) private Long id; ... } 如果我有3种类型的具体实体,EntityA、EntityB和EntityC,我希望看到如下所示的SEQUENCE_表: SEQUENC
@MappedSuperclass
public class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
...
}
如果我有3种类型的具体实体,EntityA、EntityB和EntityC,我希望看到如下所示的SEQUENCE_表:
SEQUENCE_NAME | NEXT_VAL
--------------------------
EntityA 11
EntityB 31
EntityC 101
…每个序列都是独立的,仅用于其相应的实体。使用DataNucleus很容易做到这一点吗?理想情况下,我希望避免为每个@实体声明一个@TableGenerator。Hibernate使用“preference\u sequence\u per\u entity”属性提供此行为,但我更喜欢DataNucleus的一些其他功能。简短回答:否
更复杂的回答是:不,但如果有人需要,他们可以贡献这样的东西。这就是说,它是一个少数人兴趣的特性,并且有明显的缺点,因为在很多情况下它不能被使用,特别是在与BaseEntity有关系的地方,为BaseEntity选择了什么继承,以及需要能够确定相关的对象是的,我认为每个实体类的序列可能并不总是合理的,但是当应用程序中几乎每个实体都有一个公共的
@MappedSuperclass
时,最好将类型检测推迟到类层次结构中的至少一个级别(可能是针对基表)。无论如何,我很欣赏这个响应,对于大多数应用程序来说,一个长序列可能就足够了。