如何在Java中设置Hibernate复合键表

如何在Java中设置Hibernate复合键表,java,hibernate,jpa,Java,Hibernate,Jpa,如何在Hibernate中设置以下内容 我有一个名为“Address”的表来保存个人或公司地址。我想创建一个关键字表,在这里我可以放置一些可搜索的值 与“水管工”或“割草服务”等地址关联。为了建立关联,我创建了第三个表“KeywordInstance”,它 具有复合键,并且只有特定地址项和关键字项的键 因此,一个地址的“关键字实例”中可能有零个或多个条目。我不确定如何在Hibernate中设置它 create table Address ( AddressId INT

如何在Hibernate中设置以下内容

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

因此,一个地址的“关键字实例”中可能有零个或多个条目。我不确定如何在Hibernate中设置它

create table Address ( AddressId INTEGER NOT NULL AUTO_INCREMENT, (other fields) PRIMARY KEY(AddressId) ) ENGINE=INNODB; create table Keywords ( Id INTEGER NOT NULL AUTO_INCREMENT, Keyword VARCHAR(100) NOT NULL UNIQUE, PRIMARY KEY(Id) ) ENGINE=INNODB; create table KeywordInstance ( KeywordKey INTEGER NOT NULL, AddressId INTEGER NOT NULL, PRIMARY KEY(KeywordKey,AddressId) ) ENGINE=INNODB; @Entity @Table(name = "Address", uniqueConstraints = { @UniqueConstraint(columnNames = { "AddressId" }) }) public class AddressDTO implements Comparable, Serializable { @Transient private static final long serialVersionUID = 43L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "AddressId", unique = true, nullable = false) private Integer addressId; @Column(name = "FirstName", unique = false, nullable = true, length = 50) private String firstName; @Column(name = "MiddleName", unique = false, nullable = true, length = 50) private String middleName; @Column(name = "LastName", unique = false, nullable = true, length = 50) private String lastName; @Column(name = "Addr1", unique = false, nullable = true, length = 100) private String addr1; @Column(name = "Addr2", unique = false, nullable = true, length = 100) private String addr2; @Column(name = "City", unique = false, nullable = true, length = 50) private String city; @Column(name = "State", unique = false, nullable = true, length = 2) private String state; @Column(name = "Zip", unique = false, nullable = true, length = 10) private String zip; @Column(name = "Spouse", unique = false, nullable = true, length = 50) private String spouse; @Column(name = "Company", unique = false, nullable = true, length = 80) private String company; @Column(name = "Website", unique = false, nullable = true, length = 180) private String website; @Lob @Column(name = "Notes", unique = false, nullable = true) private String notes; @Column(name = "Type", unique = false, nullable = true, length = 1) private String addressType; (getters, setters) } @Entity @Table(name = "Keywords", uniqueConstraints = { @UniqueConstraint(columnNames = { "Id" }) }) public class KeywordDTO implements Serializable { @Transient private static final long serialVersionUID = 46L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(table = "Keywords", name = "Id", unique = true, nullable = false, updatable = false) private Integer id; @Column(table = "Keywords", name = "Keyword", unique = true, length = 100) private String keyword; (getters, setters) } @Entity @Table(name = "KeywordInstance") public class KeywordInstanceDTO implements Serializable { @Transient private static final long serialVersionUID = 49L; private Integer keywordKey; private Integer addressId; (getters, setter) } 创建表地址( AddressId整数非空自动增量, (其他领域) 主键(地址ID) )引擎=INNODB; 创建表关键字( Id整数非空自动增量, 关键字VARCHAR(100)非空唯一, 主键(Id) )引擎=INNODB; 创建表关键字实例( 关键字关键字整数不为空, AddressId整数不为空, 主键(关键字键,地址ID) )引擎=INNODB; @实体 @表(name=“Address”,uniqueConstraints={@UniqueConstraint(columnNames={“AddressId”})}) 实现可比较、可序列化的 { @短暂的 私有静态最终长serialVersionUID=43L; @身份证 @GeneratedValue(策略=GenerationType.IDENTITY) @列(name=“AddressId”,unique=true,nullable=false) 私有整数地址ID; @列(name=“FirstName”,unique=false,nullable=true,length=50) 私有字符串名; @列(name=“MiddleName”,unique=false,nullable=true,length=50) 私有字符串名称; @列(name=“LastName”,unique=false,nullable=true,length=50) 私有字符串lastName; @列(name=“Addr1”,unique=false,nullable=true,length=100) 私有字符串addr1; @列(name=“Addr2”,unique=false,nullable=true,length=100) 私有字符串addr2; @列(name=“City”,unique=false,nullable=true,length=50) 私人城市; @列(name=“State”,unique=false,nullable=true,length=2) 私有字符串状态; @列(name=“Zip”,unique=false,nullable=true,length=10) 私人字符串拉链; @列(name=“party”,unique=false,nullable=true,length=50) 私人配偶; @列(name=“Company”,unique=false,nullable=true,length=80) 私人弦公司; @列(name=“Website”,unique=false,nullable=true,length=180) 私人字符串网站; @高球 @列(name=“Notes”,unique=false,nullable=true) 私人弦乐; @列(name=“Type”,unique=false,nullable=true,length=1) 私有字符串地址类型; (接球手、二传手) } @实体 @表(name=“Keywords”,uniqueConstraints={@UniqueConstraint(columnNames={“Id”})}) 实现可序列化的公共类关键字 { @短暂的 私有静态最终长serialVersionUID=46L; @身份证 @GeneratedValue(策略=GenerationType.IDENTITY) @列(table=“Keywords”、name=“Id”、unique=true、nullable=false、updateable=false) 私有整数id; @列(table=“Keywords”、name=“Keyword”、unique=true、length=100) 私有字符串关键字; (接球手、二传手) } @实体 @表(name=“KeywordInstance”) 公共类关键字InstancedTo实现可序列化 { @短暂的 私有静态最终长serialVersionUID=49L; 私有整数关键字; 私有整数地址ID; (接球手,二传手) }
您可能需要尝试
@embeddeble
@embeddedd
。您可能需要尝试
@embeddeble
@embeddedd