java - 如何使用注释映射在 hibernate 中共享相同主键的两个实体?

标签 java hibernate jpa primary-key hibernate-mapping

我是hibernate新手,我不知道如何映射这个简单的Model 使用JPAHibernate注释。我尝试建模的是,提供商具有全局评级,并且全局评级实体的标识符与提供商实体的标识符相同(单向 OneToOne),换句话说,我想要拥有外键在实体全局评级中同时为主要外部,但提供商实体还具有实体全局评级的外键 。这可能吗?

最佳答案

您可以通过@MapsId注释实现您想要的。

示例:

@Entity
public class Provider{

    @Id
    @GeneratedValue
    private long idProvider;

    @OneToOne(cascade=CascadeType.ALL, mappedBy="provider")
    private GlobalRating rating;

    // Getter & Setter
}

@Entity
public class GlobalRating{

    @Id
    private long idProvider;
        
    @OneToOne(cascade=CascadeType.ALL) 
    @MapsId
    @JoinColumn(name="idProvider")
    private Provider provider;
 
    // Getter & Setter          
}

关于java - 如何使用注释映射在 hibernate 中共享相同主键的两个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47322306/

相关文章:

java - JTextPane - 带有 HTMLEditorKit 列表的项目符号无法正确渲染,除非我执行 setText(getText()) 并重新绘制

java - 通过 Regex 表达式的 Hibernate 查询过滤器

hibernate - 合并具有唯一约束的实体

spring - 第二次注册实体管理器 (WARN : HHH000436: Entity manager factory name (empsys) is already registered.)

java - 在Java中将日期从一个时区转换为另一个时区

java - 自定义 Nifi 处理器抛出构建错误 : Null Pointer Exception from Nifi nar maven plugin

java - 有人知道如何克服 IntelliJ 中的 "Compiler internal error. Process terminated with exit code 138"吗?

hibernate - 自定义嵌入字段的列名

java - 出现错误 java.lang.ClassCastException : java. lang.String 无法转换为 [Ljava.lang.Object;

java - 通过配置类创建事务管理器和实体管理器