java - 具有嵌套在不同实体类中的 Id 的实体类

标签 java hibernate

我得到了一个包含这些列的数据库表 MyTable: int Id、字符串类型、字符串值

我得到了一个包含这些字段的实体类

@Entity
@Table(name = "MyTable")
class MyClass {
    @Id
    int Id;
    String Type;
    String Value;
}

现在我想要的是看起来像这样的类:

@Entity
class TypeA {
    MyClass myClass;
    //some stuff
}

TypeA 的 Id 应该是 MyClass.Id。这可以用 Hibernate 来完成吗? MyClass 必须是 TypeA 的变量,我明确不想要任何继承。

最佳答案

我能看到并且接近您的要求的唯一选项是:

MyClass上使用注释Embeddable,在TypeA上使用Embedded将部分解决您的问题。

部分是因为警告,即您应该将 id 字段从 MyClass 移动到 TypeA 类。我认为,这就是在不使用继承的情况下可以获得的结果。

有兴趣看看是否真的存在完全满足您要求的解决方案。

无论如何,如果可以选择继承,那么您可以在父类(super class)中拥有 id 并将该父类(super class)注释为 MappedSuperClass 并让 TypeA 扩展父类(super class)。

关于java - 具有嵌套在不同实体类中的 Id 的实体类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49109807/

相关文章:

Java & Tomcat : Severe Error starting obfuscated app w/hibernate inside

java - Hibernate schema 生成 : same configurations, 不同行为

java - 如果将自定义查询与 JOIN 结合使用,则 Hibernate AttributeConverter 会失败

java - 我如何在循环之外使用这个变量?

java - 亚马逊波利 API

java - 有人可以总结一下 Java 接口(interface)的可见性选择吗?

java - 使用查询时在 Hibernate 中查找部分缓存数据

Java GC 不明确的日志消息

java - 如何将 SQL 表创建转换为 JPA hibernate 自动创建

java - 特定列的 Spring Data UpdateTimestamp