首页 > 解决方案 > 如何在 Java 中设置 Hibernate 组合键表

问题描述

如何在 Hibernate 中设置以下内容?

我有一个名为“地址”的表来保存个人或公司地址。我想创建一个关键字表,我可以在其中放置一些可搜​​索的值以与“管道工”或“割草服务”等地址相关联。为了建立关联,我创建了第三个表“KeywordInstance”,它有一个复合键,并且只有特定地址条目和关键字条目的键。

因此,地址的“KeywordInstance”中可能有零个或多个条目。我不确定如何在 Hibernate 中进行设置。

    创建表地址(
      AddressId INTEGER NOT NULL AUTO_INCREMENT,

      (其他领域)

      主键(地址 ID)
    ) 引擎=创新;

    创建表关键字 (
      Id INTEGER NOT NULL AUTO_INCREMENT,
      关键字 VARCHAR(100) NOT NULL UNIQUE,
      主键(ID)
    ) 引擎=创新;

    创建表 KeywordInstance (
      KeywordKey INTEGER NOT NULL,
      AddressId 整数非空,
      主键(KeywordKey,AddressId)
    ) 引擎=创新;




    @实体
    @Table(name = "Address", uniqueConstraints = { @UniqueConstraint(columnNames = { "AddressId" }) })
    公共类 AddressDTO 实现 Comparable、Serializable
    {
        @短暂的
        私有静态最终长序列版本UID = 43L;


        @ID
        @GeneratedValue(策略 = GenerationType.IDENTITY)
        @Column(name = "AddressId", unique = true, nullable = false)
        私有整数地址Id;

        @Column(name = "FirstName", unique = false, nullable = true, length = 50)
        私人字符串名;

        @Column(name = "MiddleName", unique = false, nullable = true, length = 50)
        私有字符串中间名;

        @Column(name = "LastName", unique = false, nullable = true, length = 50)
        私人字符串姓氏;

        @Column(name = "Addr1", unique = false, nullable = true, length = 100)
        私有字符串地址1;

        @Column(name = "Addr2", unique = false, nullable = true, length = 100)
        私有字符串地址2;

        @Column(name = "City", unique = false, nullable = true, length = 50)
        私人字符串城市;

        @Column(name = "State", unique = false, nullable = true, length = 2)
        私有字符串状态;

        @Column(name = "Zip", unique = false, nullable = true, length = 10)
        私人字符串 zip;

        @Column(name = "配偶", unique = false, nullable = true, length = 50)
        私人弦乐配偶;

        @Column(name = "Company", unique = false, nullable = true, length = 80)
        私人弦乐公司;

        @Column(名称=“网站”,唯一=假,可为空=真,长度= 180)
        私人字符串网站;

        @高球
        @Column(name = "Notes", unique = false, nullable = true)
        私有字符串注释;

        @Column(name = "Type", unique = false, nullable = true, length = 1)
        私有字符串地址类型;

        (吸气剂,二传手)
    }

    @实体
    @Table(name = "Keywords", uniqueConstraints = { @UniqueConstraint(columnNames = { "Id" }) })
    公共类 KeywordDTO 实现 Serializable
    {
        @短暂的
        私有静态最终长序列版本UID = 46L;

        @ID
        @GeneratedValue(策略 = GenerationType.IDENTITY)
        @Column(table = "Keywords", name = "Id", unique = true, nullable = false, updatable = false)
        私人整数 id;

        @Column(table = "Keywords", name = "Keyword", unique = true, length = 100)
        私有字符串关键字;

        (吸气剂,二传手)
    }

    @实体
    @Table(name = "KeywordInstance")
    公共类 KeywordInstanceDTO 实现 Serializable
    {
        @短暂的
        私有静态最终长序列版本UID = 49L;

        私有整数关键字Key;

        私有整数地址Id;

        (吸气剂,二传手)
    }

标签: javahibernatejpa

解决方案


推荐阅读