java - 在 derby 示例数据库中创建关系

标签 java sql hibernate jpa derby

我正在 Netbeans 中使用 derby 示例数据库。我想创建具有一对多关系的表。

我有类(class)学生。 Course 应该在其表中包含所有参加该类(class)的学生,并且学生应该在其表中包含他正在参加的类(class)。到目前为止我创建了

CREATE TABLE Course
(
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
name VARCHAR(50) NOT NULL,
CONSTRAINT primary_key PRIMARY KEY (id)
);

CREATE TABLE Student
(
id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
name VARCHAR(50) NOT NULL,
surname VARCHAR(50) NOT NULL,
faculty VARCHAR(50) NOT NULL,
course_id INTEGER NOT NULL,
CONSTRAINT student_pk PRIMARY KEY (id),
CONSTRAINT student_fk  FOREIGN KEY (course_id) REFERENCES course
); 

然而,当我使用 Hibernate 映射它时,学生对象没有作为整个对象的 course 属性,只有它的 id 作为整数。

另外,如何为类(class)表创建多对一关系?

感谢您的帮助!

最佳答案

您的关系映射应如下所示:

@Entity
class Course{

   @OneToMany(mappedBy = "course")
   private Set<Student> students;

}

@Entity
class Student

   @ManyToOne
   @JoinColumn(name = "course_id")
   private Course course;

}

关于java - 在 derby 示例数据库中创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41934135/

相关文章:

java - 有没有基于spring hibernate注解的java web cms

java - 能否说服 JPA 在例如 UUID 和字符串之间进行转换?

Java Web 应用程序错误 - 无法理解为什么现在会发生

java - 如何在java中使用键盘使 Sprite 移动(libgdx)

sql - 有趣的 SQL 问题

sql - 在 PostgreSQL 中获取两个日期之间的结果

mysql - Hibernate 查询语言 (hql) 中的字数统计

java - 在 Spring Boot 中使用相对重定向失败

javascript - AJAX 代码为 PHP Session 变量返回错误 "Column cannot be null"

java - "latin1_german1_ci"排序规则来自哪里?