【发布时间】:2021-10-19 11:45:04
【问题描述】:
我有这些实体,其中 Shop 实体是父实体:
@Data
@NoArgsConstructor
@Entity
@DynamicUpdate
@Table(name = "Shop", schema = "public")
public class ShopDao {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
private String name;
private String processedStatus;
@OneToMany(mappedBy = "shopDao", cascade = CascadeType.ALL, orphanRemoval = true)
private List<BookDao> bookDaoList;
}
@Data
@NoArgsConstructor
@Entity
@ToString(exclude = {"shopDao"})
@Table(name = "Book", schema = "public")
public class BookDao {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
private String name;
private String author;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "other_id", referencedColumnName = "id")
private OtherDao otherDao;
@ManyToOne
@JoinColumn(name = "shop_id", nullable = false)
private ShopDao shopDao;
}
@Data
@NoArgsConstructor
@Entity
@ToString(exclude = {"bookDao"})
@Table(name = "Other", schema = "public")
public class OtherDao {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
private String metadata;
@OneToOne(mappedBy = "otherDao", fetch = FetchType.EAGER)
private BookDao bookDao;
}
这些是回购:
@Repository
public interface ShopRepo extends JpaRepository<ShopDao, Long> {
@EntityGraph(attributePaths = {"bookDaoList"})
List<ShopDao> findAllByProcessedStatus(String processedStatus);
}
@Repository
public interface BookRepo extends JpaRepository<BookDao, Long> {
}
@Repository
public interface OtherRepo extends JpaRepository<OtherDao, Long> {
}
当我使用findAllByProcessedStatus() 函数时,我在 Shop 对象中正确获取了 BookList,但是每本书都无法访问它们的其他对象并且我得到 LazyInitializationException:
screenshot
我该如何解决这个问题?
【问题讨论】:
标签: java spring hibernate lombok