gpt4 book ai didi

java - Hibernate多对多关系返回空集合

转载 作者:行者123 更新时间:2023-11-30 07:00:25 25 4
gpt4 key购买 nike

我正在 Spring Boot 应用程序中的两个实体之间添加多对多关系。我有以下映射:

业务.java:

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "business_vendor",
joinColumns = @JoinColumn(name = "business_id"),
inverseJoinColumns = @JoinColumn(name = "vendor_id"))
@JSON(include = false)
protected List<Vendor> vendors;

供应商.java

@ManyToMany(cascade = CascadeType.ALL, mappedBy = "vendors")
@JSON(include = false)
protected List<Business> businesses;

我可以向企业添加供应商,然后将其保存到数据库中。但是,当(在新请求中)我加载业务然后调用 business.getVendors() 时,我得到一个空列表。我可以从应用程序日志中看到 Hibernate 正在从链接表中进行选择,如果我手动对数据库运行 Hibernate 生成的查询,我会看到一行,如我所料。我尝试将 FetchMode 切换为 eager,并尝试删除 CascadeType.ALL,但都没有帮助。

此应用程序运行在 Hibernate 4.3.11 上(由于“原因”,目前无法升级)。

编辑:这是一个最小的示例:

public List<Vendor> getVendorsForBusiness(UUID businessId) {
Business business = businessRepository.findOne(businessId.toString());
return business.getVendors();
}

我希望返回一个包含 1 个供应商的列表,但我得到一个空列表,即使数据库中的链接表中有一行。

编辑2:这是我正在使用的持久方法的相关部分,它确实在business_vendor表中成功创建了一行:

public void addVendorToBusiness(UUID businessId, UUID vendorId) {
Vendor vendor = vendorRepository.findOne(vendorId.toString());
Business business = businessRepository.findOne(businessId.toString());
business.getVendors().add(vendor);
vendor.getBusinesses().add(business); // This line doesn't make a difference
businessRepository.save(business);
}

最佳答案

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "business_vendor",
joinColumns = @JoinColumn(name = "business_id"**, referencedColumnName = "enter business Id name"**),
inverseJoinColumns = @JoinColumn(name = "vendor_id", **referencedColumnName = "enter vendor Id name"** ))
@JSON(include = false)
protected List<Vendor> vendors;

**OR**

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "business_vendor",
joinColumns = @JoinColumn(**name = "tablename_idname"**),
inverseJoinColumns = @JoinColumn(**name = "tablename_idname"**))
@JSON(include = false)
protected List<Vendor> vendors;

关于java - Hibernate多对多关系返回空集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41025076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com