Java 在hibernate中映射具有主键和外键组合的三个表

Java 在hibernate中映射具有主键和外键组合的三个表,java,hibernate,jpa,orm,hibernate-mapping,Java,Hibernate,Jpa,Orm,Hibernate Mapping,我必须在hibernate中映射这些表,truth在很多方面都做了尝试,但对我来说都不起作用,如果我能帮上忙,我就不会粘贴我的代码,因为我认为它不对,而且我做了很多更改 餐桌国家 idCountry(PK) 国名 表区域 idRegion(PK) idCountry(主键,FK) 地区名称 表格省份 国内各省(PK) idRegion(主键,FK) 省名 希望您能帮助我,非常感谢以下是表格映射: @Entity @Table(name = "COUNTRY") public class Coun

我必须在hibernate中映射这些表,truth在很多方面都做了尝试,但对我来说都不起作用,如果我能帮上忙,我就不会粘贴我的代码,因为我认为它不对,而且我做了很多更改

餐桌国家 idCountry(PK)

国名

表区域 idRegion(PK)

idCountry(主键,FK)

地区名称

表格省份 国内各省(PK)

idRegion(主键,FK)

省名


希望您能帮助我,非常感谢

以下是表格映射:

@Entity
@Table(name = "COUNTRY")
public class Country implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "idCountry", unique = true, nullable = false)
    private int countryId;

    @Column(name = "countryName", nullable = false)
    private String countryName;

    @OneToMany(mappedBy = "regionPk.country", cascade = CascadeType.ALL)
    private Set<Region> regions = new HashSet<Region>(0);

    // Generate Getters, Setters, hashCode() and equals()

}

@Entity
@Table(name = "REGION")
public class Region implements Serializable {

    @EmbeddedId
    private RegionPk regionPk;  //  RegionPk contains the composite PK

    @Column(name = "RegionName", nullable = false)
    private String regionName;

    @OneToMany(mappedBy = "provincePk.region", cascade = CascadeType.ALL)
    private Set<Province> provinces = new HashSet<Province>(0);

    // Generate Getters, Setters, hashCode() and equals()

}

@Embeddable
public class RegionPk implements Serializable {

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "idRegion", unique = true, nullable = false)
    private int regionId;

    @ManyToOne
    @JoinColumn(name = "idCountry", nullable = false)
    private Country country;

    // Generate Getters, Setters, hashCode() and equals()

}

@Entity
@Table(name = "PROVINCES")
public class Province implements Serializable {

    @EmbeddedId
    private ProvincePk provincePk;  //  ProvincePk contains the composite PK

    @Column(name = "ProvinceName", nullable = false)
    private String provinceName;

    // Generate Getters, Setters, hashCode() and equals()

}

@Embeddable
public class ProvincePk implements Serializable {

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "idProvinces", unique = true, nullable = false)
    private int provinceId;

    @ManyToOne
    @JoinColumn(name = "idRegion", nullable = false)
    private Region region;

    // Generate Getters, Setters, hashCode() and equals()

}
@实体
@表(name=“COUNTRY”)
公共类国家/地区实现可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“idCountry”,unique=true,nullable=false)
私人国际身份证;
@列(name=“countryName”,null=false)
私有字符串countryName;
@OneToMany(mappedBy=“regionPk.country”,cascade=CascadeType.ALL)
私有集区域=新哈希集(0);
//生成getter、setter、hashCode()和equals()
}
@实体
@表(name=“REGION”)
公共类区域实现可序列化{
@嵌入ID
private RegionPk RegionPk;//RegionPk包含复合PK
@列(name=“RegionName”,null=false)
私有字符串regionName;
@OneToMany(mappedBy=“provincePk.region”,cascade=CascadeType.ALL)
私有集省份=新哈希集(0);
//生成getter、setter、hashCode()和equals()
}
@可嵌入
公共类RegionPk实现可序列化{
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“idRegion”,unique=true,nullable=false)
私有区域ID;
@许多酮
@JoinColumn(name=“idCountry”,nullable=false)
私人国家;
//生成getter、setter、hashCode()和equals()
}
@实体
@表(name=“省”)
公共类省份实现可序列化{
@嵌入ID
private ProvincePk ProvincePk;//ProvincePk包含复合PK
@列(name=“ProvinceName”,null=false)
私有字符串provinceName;
//生成getter、setter、hashCode()和equals()
}
@可嵌入
公共类ProvincePk实现可序列化{
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“idProvinces”,unique=true,nullable=false)
私用省ID;
@许多酮
@JoinColumn(name=“idRegion”,nullable=false)
私人区域;
//生成getter、setter、hashCode()和equals()
}

你好!,感谢您的回复,我遵循了您的示例,我做得更好,但我得到了以下错误:com.test.mydb.entity.Region中引用com.test.mydb.entity.Region的外键的列号错误。应该是2