使用非主键列的 Hibernate 连接

Fak*_*kiR 5 java hibernate jpa joincolumn

我有两张桌子:

  1. 用户:

    • user_id(主要)
    • ip(唯一)
    • ETC ..
  2. 服务到IP

    • id(主要)
    • 服务ID
    • ip
    • ETC ..

课堂上用户:

@OneToMany()
@JoinColumn(name = "ip", insertable = false, nullable = false, updatable = false)
public List<QPlanService> getPlanServices() {
    return planServices;
}
Run Code Online (Sandbox Code Playgroud)

使用 MySQL 查询日志,我们得到类似的信息:

SELECT *
FROM services_users planservic0_ 
     LEFT OUTER JOIN services qservice1_ 
          ON planservic0_.service_id = qservice1_.id 
WHERE planservic0_.ip = 777
Run Code Online (Sandbox Code Playgroud)

在 WHERE 条件下,使用“user_id”字段(默认字段是主键 - users.id)(user_id=777)。

如何指定我需要从用户实体获取“ip”字段的值,而不是“user_id”?

我将不胜感激任何帮助!

Ame*_*bsa 9

JoinColumn只会指定保存​​外键的列的名称,因此更改 joincolumn 的名称绝对没有帮助。

Hibernate 默认情况下将使用主键进行连接,如果您想覆盖它,您可以简单地referencedColumnName在关系中使用,但引用的列应该是唯一的