gpt4 book ai didi

java - 我可以编写一个 hibernate 实体吗?

转载 作者:行者123 更新时间:2023-12-02 01:41:26 25 4
gpt4 key购买 nike

我最近继承了一个项目,其中有 2 个共享许多公共(public)字段的表。我是 hibernate 的新手,想知道是否可以使用组合来生成表而不是继承? B和D基本上是同一个类,只是表名不同。

当前层次结构是

  • B 扩展 A 扩展 BaseClass
  • D 扩展 C 扩展 BaseClass

我目前的问题是,许多其他类扩展了 BaseClass,它们没有共享字段,并且 2 个子类不共享公共(public)父类,因此我无法在层次结构中添加另一个级别并使用 @MappedSuperclass 。

因此,我想知道是否可以将我的公共(public)字段分组到一个类中,并以某种方式用这个新类组成我的子类?

对神秘的名字表示歉意,但一如既往;保密...

编辑 - 发现与 @Embeddable https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/chapters/domain/embeddables.html 类似的东西

最佳答案

如果您使用 Hibernate 的 JPA 接口(interface),则可以使用 @Embedded@Embeddable 来或多或少地获得您想要的东西。请注意,更改不会是透明的:您所做的:

@Entity
public class B extends A {
@Basic
private int foo;
...
}

您通过使用 b.foo 在 JPQL 中引用的内容,您将拥有:

@Embeddable
public classs Common {
@Basic
private int foo;
...
}

@Entity
public class B extends A {
@Embedded
private Common common;
...
}

您必须使用 b.common.foo 在 JPQL 中引用它。

在此处阅读有关可嵌入实体的更多信息: https://en.wikibooks.org/wiki/Java_Persistence/Embeddables

关于java - 我可以编写一个 hibernate 实体吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com