我有两张桌子:
用户:
- user_id(主要)
- ip(unique)
- 等..
- 醇>
services_to_ip
- id(主要)
- 的service_id
- IP
- 等..
在班级用户中:
@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)。
如何指定我需要从User实体获取'ip'字段的值,而不是'user_id'?
我将不胜感激任何帮助!
答案 0 :(得分:2)
JoinColumn
只会指定包含外键的列的名称,因此更改joincolumn的名称绝对无济于事。
Hibernate默认使用主键进行加入,如果你想覆盖它,你可以在关系中使用referencedColumnName
,但引用的列应该是唯一
答案 1 :(得分:0)
如上所述Amer Qarabsa:
@OneToMany()
@JoinColumn(name = "ip", insertable = false, nullable = false, updatable = false, referencedColumnName="ipcolumnName")
public List<QPlanService> getPlanServices() {
return planServices;
}