休眠条件加入

时间:2018-08-07 23:39:37

标签: java hibernate

我正在尝试加入具有2个条件的表,两个表中的userId和guideId相同。

@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "user_id",insertable =false, updatable = false)
@Where(clause = "guide_id = guide_id") <-- this isn't working
@LazyCollection(LazyCollectionOption.FALSE)
@NotFound(action = NotFoundAction.IGNORE)
private UserInvite userInvite;

这是正确的做法吗?

我找到了一些有关过滤器的文档,但这似乎是一个过大的选择。有使用Where注释的简单解决方案吗?

1 个答案:

答案 0 :(得分:1)

为什么在指定关系时不使用@JoinColumns

@JoinColumns({
        @JoinColumn(name="user_id", referencedColumnName="user_id",insertable =false, updatable = false),
        @JoinColumn(name="guide_id", referencedColumnName="guide_id",insertable =false, updatable = false)
    })

如果您仍然坚持使用@Where,请尝试使用以下子句:

@Where(clause = "guide_id = userInvite.guide_id")

请确保在创建关系的当前实体中将 guide_id 映射为字段

如果以上条款无效,请告知我会以其他方式解决