当前位置: 首页 > 知识库问答 >
问题:

在hibernate中创建外键映射

秦宏硕
2023-03-14

b)对Employee类中的ReferencedColumnName='department id'使用@ManyToOne和@JoinColumn。

建议采用哪种方法?还是这两种方法用于完全不同的问题?

共有1个答案

漆雕令秋
2023-03-14

首先,这里有两个实体department和Employee。其次,我们必须理解manytoone在这里意味着什么,正如您所说的,在一个部门中可以有许多员工。

映射将是这样的,请注意,这只是一个片段:

@Entity
@Table(name="EMPLOYEE")
public class Employee {


@Id
@GeneratedValue
@Column(name="employee_id")
private Long employeeId;

@Column(name="firstname")
private String firstname;

@Column(name="lastname")
private String lastname;

@ManyToOne
@JoinColumn(name="department_id")
private Department department;
// Getter and Setter methods

}

@Entity
@Table(name="DEPARTMENT")
public class Department {


@Id
@GeneratedValue
@Column(name="department_id")
private Long departmentId;

@Column(name="department_name")
private String departmentName;

@OneToMany(mappedBy="department")
private Set<Employee> employees;

// Getter and Setter methods
 类似资料:
  • 我现在对hibernate有一个很奇怪的问题。在一个表上,它创建了一个引用它自己的外键。该列也是主键。这基本上阻止了我从表中删除任何行。 在日志中我可以看到一行字:

  • Hi编写Spring应用程序,使用Spring Security。这是我的用户和帐户角色数据库: 我的实体类: 当我尝试登录我的系统我有错误: Hibernate:选择userrolese0_. username作为username3_1_0_,userrolese0_. id作为id1_0_0_,userrolese0_. id作为id1_0_1_,userrolese0_. name作为nam

  • 我正在尝试我们非主键作为外键在我的应用程序。场景如下:我有EMPLOYEE和EMPLOYEE_PROPERTIES表。Employee和Employee属性之间存在一对多的关系。下面是我的架构: 下面是我的hibernate映射XML:------------------------------- -------------员工属性------------------- 是否可以引用非主键作为外键

  • 我有两张桌子: 基本上,我想通过id字段定义一个从到的外键,这两个表中的字段是相同的。问题是,当我在IntelliJ Idea中检查数据库时,我在Keys部分没有看到任何外键(检查了两个表),只有它们的PK。这段代码有问题吗?我已经按照另一个类似问题中的建议设置了属性:

  • 问题内容: 我在为某些实体设置jpa映射时遇到麻烦。我有一个如下定义的父实体。 然后,我有一个带有复合键的子实体,以及此表的主键的外键,如下所示: 我知道子实体不正确,但是我不确定如何将其设置为具有复合PK。我知道我需要设置一个PK类,但是当一个字段是父类的外键时,我不确定该怎么做。一旦设置好,父级将如何引用子级实体? 任何帮助表示赞赏。 问题答案: 这受JPA 2规范的 第2.4.1节“与派生身

  • 我编写了一个映射,如下所示: 当我运行应用程序时,会出现如下错误: 2012-05-15 17:12:38,651--WARN--失败的模式语句:创建表雇员(Id整数不为空auto_increment,版本日期时间不为空,FirstName nvarchar(300),LastName nvarchar(300),雇员类型nvarchar(300),主键(Id),唯一(firstName,last