【问题标题】:Hibernate and Composite Keys休眠和复合键
【发布时间】:2012-05-25 18:39:10
【问题描述】:

我不知道如何使用带有注释和休眠的复合键...

例如,我有这张表:

TABLE_A

初始化, 号码, 碳纳米管, 典型

TABLE_B

初始化, 号码, V_CNT

TABLE A 和 B 主键是由 INIT 和 NUM 组成的复合键

我想运行我的查询:

   "FROM TABLE_A AS A " +
   "LEFT JOIN A.hiber_join AS B " +
   "WHERE A.INIT||A.NUM IN (:carList) AND A.INIT IN (:initList) AND A.NUM IN              (:numberList) " + 
    "AND B.V_CNT > 0

我的课程如下所示:

*Class_A*

public class TABLE_A implements Serializable{

private String INIT;
private String NUM;
private Integer CNT;
private String TYP;

    @OneToOne
@JoinTable(name = "TABLE_B",
    joinColumns = {@JoinColumn(name = "INIT"), @JoinColumn(name = "NUM")}

)
protected TABLE_B hiber_join;

    public TABLE_A()
    {}

    public void doHibernateStuff()
    {
     //call query get result set
    }

}

//B类

public class TABLE_B implements Serializable{

private String NUM;
private String INIT;
private Integer V_CNT;
}

我试图让它尽可能简单,因为我需要从如何使用 hibernate 和注释的基础知识开始......正如你所知道的那样,我已经工作了一段时间,hibernate 文档和其他问题还没有似乎有帮助...

【问题讨论】:

    标签: hibernate annotations composite-primary-key


    【解决方案1】:

    AFAIK,您需要使用 PrimaryKeyJoinColumn(我更改了类和属性名称以符合标准 Java 命名约定,但您应该选择有意义的名称):

    public class BEntity implements Serializable{
    
        @Id
        @Column(name = "NUM")
        private String num;
    
        @Id
        @Column(name = "INIT")
        private String init;
    
        @Column(name = "V_CNT")
        private Integer vcnt;
    }
    
    public class AEntity implements Serializable{
    
        @Id
        @Column(name = "NUM")
        private String num;
    
        @Id
        @Column(name = "INIT")
        private String init;
    
        @OneToOne
        @PrimaryKeyJoinColumns({
            @PrimaryKeyJoinColumn(name="NUM", referencedColumnName="NUM"),
            @PrimaryKeyJoinColumn(name="INIT", referencedColumnName="INIT")
        })
        private BEntity bEntity;
    }
    

    【讨论】:

    • 如果我的AEntity 类没有init 变量,那么@OneToOne 将如何完成?在这种情况下请帮助我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    相关资源
    最近更新 更多