【问题标题】:Collection of the same entity within an entity实体内同一实体的集合
【发布时间】:2019-12-05 04:57:12
【问题描述】:

我正在尝试创建一个与集合具有相同实体类型的实体。 我在数据库中有这个实体的“视图”,它有 org_id 和 root_id。实体中的 org_id 与 @Id 列映射。

在 sql 的“视图”中,我没有映射外键。是否可以以某种方式在 hibernate / JPA 中映射这个外键,或者指定一个查询来这样做?我使用的是 spring 数据,所以 JPQL 可以工作。

代码如下所示:

@Entity
@Table
public class SupplierData {

@Id
@Column(name = "org_uuid")
private String orgUUID;
@Column(name = "root_uuid")
private String rootUUID;

    @ManyToOne
    @JoinColumn(name="root_uuid", insertable=false, updatable=false)
    private SupplierData rootSupplierData;

    @OneToMany(mappedBy="rootSupplierData", fetch = FetchType.EAGER, 
    cascade = CascadeType.ALL)
    private Collection<SupplierData> supplierDatas=new HashSet<>();
    // ......

但是 findall 查询不显示任何结果。如果我删除 ManyToOne 和 OneToMany,我的所有数据都会显示出来。

我认为我在数据库中缺少外键关系,但我自己无法添加。有没有办法在 jpa 注释中映射我自己?

【问题讨论】:

  • 缺少 FK 约束应该无关紧要。请发布您尝试使用的查询

标签: sql hibernate jpa join orm


【解决方案1】:

我修好了。我不得不删除其中一个 rootUUID 引用。我有字符串和对象。我可以使用其中一个。

例如我删除 @Column(name = "root_uuid") .私有字符串 rootUUID;

而且它有效。那是因为 @JoinColumn(name="root_uuid"... 已经引用了该列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多