【问题标题】:Spring Data JPA / Hibernate ManyToMany relation is always emptySpring Data JPA / Hibernate ManyToMany 关系始终为空
【发布时间】:2021-07-28 20:26:33
【问题描述】:

我遇到了一个问题,我已经声明了我的实体之间的双向@ManyToMany 关系,但是当我尝试按存储库执行选择时,@ManyToMany 集合始终为空。

我的实体有一个例子:

@Data
@EqualsAndHashCode
@Entity
@Table(name = "provider", schema = "debt")
public class ProviderEntity {

    @Id
    @Column(name = "provider_id")
    private String providerId;
    @Column(name = "external_provider_id")
    private String externalProviderId;
    private String description;
    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinTable(
            name = "provider_supported_driver", schema = "debt",
            joinColumns = @JoinColumn(name = "provider_id", foreignKey = @ForeignKey(name = "FK_PSD_TO_P")),
            inverseJoinColumns = @JoinColumn(name = "driver_id", foreignKey = @ForeignKey(name = "FK_PSD_TO_D"))
    )
    private Set<DriverEntity> drivers = new HashSet<>();
}



@Data
@EqualsAndHashCode
@Entity
@Table(name = "driver", schema = "debt")
public class DriverEntity {

    @Id
    @Column(name = "driver_id")
    private String driverId;
    @Enumerated(EnumType.STRING)
    private DriverType type;
    private String description;
    @ManyToMany(mappedBy = "drivers")
    private Set<ProviderEntity> provider = new HashSet<>();
}

另外,我启用了 hibernate 生成的 SQL 查询日志,当我运行它时,查询运行良好。 对于相同的问题,我尝试了不同的指南和答案,但没有任何结果。

这种行为的原因是什么?也许有人有任何想法?

【问题讨论】:

    标签: java hibernate spring-data-jpa


    【解决方案1】:

    我找到了这个问题的原因,问题出在我的表的主键上,它们不是按顺序或其他方式生成的,因为我了解 Hibernate 不了解如何映射这些列

    【讨论】:

    • 根据您的代码,如果您想生成 ID,您的 ID 属性上缺少 @GeneratedValue 注释。
    猜你喜欢
    • 2023-01-11
    • 2019-03-09
    • 2019-02-07
    • 2021-05-22
    • 2017-10-16
    • 2020-02-04
    • 1970-01-01
    • 2017-12-12
    • 2023-03-15
    相关资源
    最近更新 更多