java - 在hibernate中使用主键和外键组合映射三个表

标签 java hibernate jpa orm hibernate-mapping

我必须在 hibernate 中映射这些表,事实已经尝试了很多方法,但对我来说没有用,如果我可以帮助解决这个问题,我不会粘贴我的代码,因为我认为它不正确,我变化很大。

餐 table 国家

idCountry(PK)

国家名称

表区域

idRegion(PK)

idCountry(PK、FK)

区域名称

表省份

idProvinces (PK)

idRegion(PK、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()

}

关于java - 在hibernate中使用主键和外键组合映射三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239857/

相关文章:

java - ArrayList 在从谷歌数据存储区检索时抛出异常(使用 gwt、java)

java - 在 Java 中将 float 的内容移至 long

java - 从另一个异步方法调用的 Spring 异步方法

java - Spring Security bcrypt 编码登录不起作用

java - 使用 JPA 处理集合更新

java - 如何在雅虎通中跟踪数据包!

java - Mysql 复杂对象 Hibernate 批量插入

mysql - 无法插入列名称为 from 、 to 的表

java - 在 Spring 3.2.5 中使用 EclipseLink(Pet Clinic 项目)

java - Play 1.2.x 使用数据库时出现奇怪的事情