如何仅在没有主键的实体中定义外键

时间:2011-12-24 14:07:32

标签: hibernate jpa hibernate-mapping

我的表格如下:

1- medical_company

    account_entity account_entity_id 列(不是pk)
  • medical_company_id 外键
  • 列1
  • 列2
  • 栏3

2- account_entity

  • account_entity_id (pk)
  • 列1
  • 列2
  • 栏3

实体:

1- MedicalCompany:

@SuppressWarnings("serial")
@Entity
@Table(name = "medical_company")
public class MedicalCompany implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "medical_company_id", unique = true, nullable = false)
@Basic(fetch = FetchType.EAGER)
private Long id;

}

2- AccountEntity:

@SuppressWarnings("serial")
@Entity
@Table(name = "account_entity")
public class AccountEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "account_entity_id", unique = true, nullable = false)
    @Basic(fetch = FetchType.EAGER)
    private Long id;

}

我想在medical_company表中将 medical_company_id 作为外键而不定义主键,如何实现?

2 个答案:

答案 0 :(得分:1)

实体必须拥有ID。这是强制性的。此ID是否是数据库中的实际PK并不重要(尽管我没有看到任何理由不将其定义为PK),但ID必须是不可变的且在表的所有行中都是唯一的。

答案 1 :(得分:0)

Hibernate不会允许用PK来定义实体。因此,您应该将medical_company_id声明为主键,并将其作为account_entity表的外键。