4

我有两张桌子:

  1. 用户:

    • user_id(主要)
    • ip(唯一)
    • ETC ..
  2. services_to_ip

    • id(主要)
    • 服务标识
    • ip
    • ETC ..

在课堂用户:

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

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

SELECT *
FROM services_users planservic0_ 
     LEFT OUTER JOIN services qservice1_ 
          ON planservic0_.service_id = qservice1_.id 
WHERE planservic0_.ip = 777

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

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

我将不胜感激任何帮助!

4

2 回答 2

4

JoinColumn只会指定保存​​外键的列的名称,因此更改 joincolumn 的名称绝对无济于事。

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

于 2018-06-07T09:49:08.563 回答
0

正如上面提到的Amer Qarabsa

  @OneToMany()
    @JoinColumn(name = "ip", insertable = false, nullable = false, updatable = false, referencedColumnName="ipcolumnName")
    public List<QPlanService> getPlanServices() {
        return planServices;
    }
于 2018-06-07T10:09:24.810 回答