java—如何在hibernate上Map具有复合键的表,其中一列是外键

daolsyd0  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(402)

我很难在hibernate上Map以下数据库架构:

这个 tb_order 是一个现有的表,它已经Map到java类。这个 tb_external_order_details 表是最近创建的,它只有两列。这两列都是复合主键的一部分。这个 tb_order_id 列引用 id 上的列 tb_order table和table external_order_id 只是一个松散的id,不引用数据库中的任何列。
请注意,数据库表和列名并不完全等于java类和属性名。e、 g.java类名是 Order 表名是 tb_order . 我认为这一点很重要,因为hibernate推断出的表/列名可能不匹配(表列也是大小写,而java类的属性是大小写)。
我在这里尝试了许多解决堆栈溢出的方法,但没有一个有效。另外,在我发现的示例中,复合主键的任何列都不是引用另一个表的另一列的外键。

8yparm6h

8yparm6h1#

试试这个:

@Entity
public class Order {
    @Id
    Integer id;
    String type;

    @OneToMany(mappedBy = "order")
    Set<ExternalOrderDetails> externalOrderDetails;
}
@Entity
public class ExternalOrderDetails {
    @EmbeddedId
    ExternalOrderDetailsId id;
    @ManyToOne(fetch = LAZY)
    @JoinColumn(name = "tb_order_id", insertable = false, updatable = false)
    Order order;
}
@Entity
public class ExternalOrderDetailsId {
    @Column(name = "tb_order_id")
    Integer orderId;
    @Column(name = "external_order_id")
    Integer externalOrderId;
}

相关问题