当前位置: 首页 > 面试题库 >

在Hibernate中为子类的每个表指定不同的顺序

邓禄
2023-03-14
问题内容

如果ID是在映射的超类上定义的,是否可以为Hibernate中的每个表指定不同的序列?

我们应用程序中的所有实体都扩展了一个超类,DataObject如下所示:

@MappedSuperclass
public abstract class DataObject implements Serializable {
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id")
    private int id;
}

@Entity
@Table(name = "entity_a")
public class EntityA extends DataObject { ... }

@Entity
@Table(name = "entity_b")
public class EntityB extends DataObject { ... }

这将导致所有实体使用共享序列,即默认序列hibernate_sequence

我希望做的是使用一个单独的序列为每个实体,例如entity_a_sequenceentity_b_sequence上面的例子。如果在子类上指定了ID,则可以使用@SequenceGenerator批注为每个实体指定一个序列,但是在这种情况下,该ID在超类上。鉴于ID在超类中,有没有一种方法可以为每个实体使用单独的序列-
如果是这样,怎么做?

(如果相关,我们正在使用PostgreSQL 8.3)


问题答案:

您是否尝试过这种方式?

@MappedSuperclass
public abstract class DataObject implements Serializable {
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idgen")
    @Column(name = "id")
    private int id;
}

@Entity
@SequenceGenerator(initialValue = 1, name = "idgen", sequenceName = "entityaseq")
@Table(name = "entity_a")
public class EntityA extends DataObject {

}

@Entity
@SequenceGenerator(initialValue = 1, name = "idgen", sequenceName = "entitybseq")
@Table(name = "entity_b")
public class EntityB extends DataObject {

}

很抱歉,我目前没有测试所需的环境,但我稍后会再尝试。



 类似资料:
  • 我显示这样的数组: FieldListItem呈现方法是: 基本上,我使用切片只显示前3个元素,我想以不同的方式显示它们。例如,我想将第一个元素样式为标题-粗体,第二个元素为单行,字体应该更小,最后一个元素可以是多行,颜色应该不同。我有什么办法可以做到吗?

  • 我有以下实体,它是应用程序中每个其他实体的基础实体: 我的目标是有两个表——图像和文件,以便这两个表共享给所有扩展BaseEntity的实体。我确实意识到,为此,所有扩展BaseEntity的实体都应该有一个共享id序列。 然后我有两个实体,它们是BaseEntity的子类型: 现在,当我设置时,hibernate为我生成以下表: 但是,我想要四张桌子: 我真的很感激任何帮助, 谢啦

  • 我正在对客户代理的类型进行建模。他们被赋予参数:他们工作(真/假)并接受教育(真/假)。 存在这样一个条件,即块服务中的代理在works==true和education==true的位置。其他人都去出口。 在此处输入图像描述 每个代理如何指定不同的参数?

  • 我想检查两个列表(比方说,ArrayList)是否有完全相同的实例类,基于预期的列表。为此,我构建了下一个方法,但我想知道是否有另一种使用某些库的奇特方法,比如assertJ。 任何建议都是非常受欢迎的。谢谢

  • 在自定义图表上工作,可以根据数据提供的值确定条形图或水平条形图中的条形图的厚度,而不是使用barThickness或barPer百分比/类别百分比的预设宽度。 目标:我可以用包含值和

  • 问题内容: 我正在考虑Hibernate管理的类层次结构的表布局,并且从某种意义上说,每个子类的表技术肯定是最合适的。但是,仔细考虑逻辑,我对它的性能有些担忧,尤其是随着子类数量的增加。 举一个非常简短(经典)的示例,假设您具有以下类: (我在取消getter和setter和Hibernate映射等,只是假设它们是基本的显而易见的情况)。 这些实体的数据库表很有意义,您可以很好地进行非规范化等等。