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(唯一)
    • 等等
  • 服务到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;
        }