【问题标题】:Hibernate where condition on Join在加入条件下休眠
【发布时间】:2018-08-07 23:39:36
【问题描述】:

我正在尝试加入具有 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 注释的简单解决方案?

【问题讨论】:

标签: java hibernate


【解决方案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 映射为您当前创建关系的实体中的字段

如果上述条款不起作用,请告诉我会以其他方式解决

【讨论】:

  • 似乎有效,谢谢!我曾尝试使用 JoinColumns,但错过了 referenceColumnName 部分。
猜你喜欢
  • 2014-09-04
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2010-10-17
相关资源
最近更新 更多