java - Spring Boot Hibernate @OneToMany 集合总是空的

标签 java hibernate jpa spring-data-jpa

我尝试在 spring boot 中通过存储库加载一些数据。主要实体完全没问题并且包含数据。 @OneToMany 关系集合除外。 从调试输出中可以看到正确的查询,它肯定会返回数据。

问题:

  • 即使执行生成的 SQL 并返回结果,bookings 列表也为空。
  • stackoverflow 上没有线程可以解决我的问题。

我是这样尝试的:

Optional<Ad> pi = adRepository.findById(adID);
if (!pi.isPresent()) {
    return null;
}
Ad ad = pi.get();

List<Booking> bookings = ad.getItem().getBookings();

// bookings is null. why is it not populated?
// i've also tried use FetchType.EAGER. Didn't helped

广告

@Entity
@Table(schema = "xxx", name = "AD")
public class Ad {
    @Id
    @Column(name = "adID")
    private Long id;

    @OneToOne(optional=true, mappedBy="ad", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    private Item item;
}

项目

@Entity
@Table(schema="xxx", name="ITEM")
public class Item {
    @Id
    @OneToOne(optional=true, fetch=FetchType.LAZY)
    @JoinColumn(name="adID", unique=true, nullable=false, updatable=false)
    private Ad ad;

    @OneToMany(mappedBy = "item")
    private List<Booking> bookings;
}

预订

@Entity
@Table(schema = "xxx", name = "BOOKING")
public class Booking {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "bookID")
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "adID", nullable = false, referencedColumnName = "adID")
    private Item item;
}

Hibernate 生成的查询

select
bookings0_.adID as adID8_34_0_,
bookings0_.bookID as bookID1_34_0_,
bookings0_.bookID as bookID1_34_1_
from xxx.BOOKING bookings0_
where bookings0_.prditmID=1337

有什么我遗漏的吗?

问候

最佳答案

问题是 Item 类和 @Id 声明。 更改为并且有效。

@Entity
@Table(schema="xxx", name="ITEM")
public class Item {
    @Id
    @Column(name = "adID")
    private Long id;

    @OneToOne(optional=true, fetch=FetchType.LAZY)
    @JoinColumn(name="adID", unique=true, nullable=false, updatable=false)
    private Ad ad;

    @OneToMany(mappedBy = "item")
    private List<Booking> bookings;
}

关于java - Spring Boot Hibernate @OneToMany 集合总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58834932/

相关文章:

java - 我无法将元素添加到列表中?不支持的操作异常

java - "Hibernate"类映射到底代表什么?

java - 在多个 VM 上 hibernate

java - Hibernate @OrderBy 用于嵌套属性

java - 在单个表上映射两个类

javax.servlet.jsp.JspTagException : Invalid JSP file %2e%2e/%2e%2e/%2e%2e/%2e%2e/system/autoexec. ncf

java - 使用反射调用类内部的构造函数

java - 为什么下载的 pdf 文件已损坏?

java - Id 列来自其他表 JPA 实体

java - Spring 数据 - JPA : issue query with DTO and IF statement