JPA Enitiy有一个列加入了另外两个实体的关系

时间:2017-03-07 11:19:39

标签: spring hibernate jpa spring-boot

目前我正在尝试实现几个实体,其中一个实体在数据库中有一列可以代表其他两个实体。

要明确这些是我正在讨论的表格,我可以更改它们

图片表: IMAGES table

用户表非常大,但部分内容应该足够了: Users table

页面表:

enter image description here

逻辑是图像可以由用户或页面拥有。它所拥有者由position_id和path列表示。所以路径可以是USER或PAGE,而position_id是用户/页面的id。

如何在JPA中实现position_id与用户和页面之间的ManyToOne关系?

我想象它看起来像这样:

@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="position_id", insertable = false, updatable = false)
@Where(clause="path='pages'")
private Page page;

@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="position_id", insertable = false, updatable = false)
@Where(clause="path='users'")
private User user;

然而,这将返回用户或页面的所有图像实例,忽略它具有的路径。此外,当我尝试根据Image实体的路径值过滤值时,它会给我LazyInitializationException。 如何解决这个问题?

0 个答案:

没有答案