【问题标题】:Creating relations in derby sample database在 derby 示例数据库中创建关系
【发布时间】:2017-01-30 10:55:04
【问题描述】:

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

我有coursesstudent。课程应该有所有参加这门课程的学生,学生应该有他正在参加的课程。到目前为止我创建了

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 进行映射时,学生对象没有课程属性作为整个对象,而只有其 id 作为整数。

另外,我如何为课程表创建多对一关系?

感谢您的帮助!

【问题讨论】:

    标签: java sql hibernate jpa derby


    【解决方案1】:

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

    @Entity
    class Course{
    
       @OneToMany(mappedBy = "course")
       private Set<Student> students;
    
    }
    
    @Entity
    class Student
    
       @ManyToOne
       @JoinColumn(name = "course_id")
       private Course course;
    
    }
    

    【讨论】:

    • 所以我应该只执行上述sql,创建反向休眠文件,生成映射文件并将其添加到POJO类中?
    • 当你使用注解时,你不需要hbm映射文件。你只需要指定packagesToScan休眠属性。
    • 除非你不能使用注释..是这样吗?您是否还期望从休眠状态在启动时创建数据库?使用 hbm2.ddl 设置?
    • 我在 netbeans 中使用 derby 创建数据库,我正在休眠以映射表并使用它进行操作。
    • 好的,太好了..所以您在检索数据时还有任何问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多