Java 使用非主键列休眠连接
我有两张桌子:Java 使用非主键列休眠连接,java,hibernate,jpa,joincolumn,Java,Hibernate,Jpa,Joincolumn,我有两张桌子: 用户: 用户id(主) ip(唯一) 等等 服务到ip id(主要) 服务id 知识产权 等等 类内用户: @OneToMany() @JoinColumn(name = "ip", insertable = false, nullable = false, updatable = false) public List<QPlanService> getPlanServices() { return planServices; } 在WHERE条件下
- 用户id(主)
- ip(唯一)
- 等等
- id(主要)
- 服务id
- 知识产权
- 等等
@OneToMany()
@JoinColumn(name = "ip", insertable = false, nullable = false, updatable = false)
public List<QPlanService> getPlanServices() {
return planServices;
}
在WHERE条件下,使用“user_id”字段(默认字段为主键-users.id)(user_id=777)
如何指定我需要从用户实体而不是从用户id获取“ip”字段的值
我将感谢任何帮助
JoinColumn
将只指定包含外键的列的名称,因此更改JoinColumn的名称绝对没有帮助
默认情况下,Hibernate将使用主键进行加入,如果要覆盖主键,只需在关系中使用referencedColumnName
,但引用的列应该是唯一的,如上所述:
@OneToMany()
@JoinColumn(name = "ip", insertable = false, nullable = false, updatable = false, referencedColumnName="ipcolumnName")
public List<QPlanService> getPlanServices() {
return planServices;
}
@OneToMany()
@JoinColumn(name=“ip”,insertable=false,nullable=false,updateable=false,referencedColumnName=“ipcolumnName”)
公共列表getPlanServices(){
返回服务;
}
您必须创建HQL查询,以便轻松连接2个表。它不是columnName,而是属性名
@OneToMany()
@JoinColumn(name = "ip", insertable = false, nullable = false, updatable = false, referencedColumnName="ipcolumnName")
public List<QPlanService> getPlanServices() {
return planServices;
}