休眠-映射问题

时间:2019-12-08 22:18:22

标签: hibernate

我遇到了休眠映射问题

我的数据库设计为一对多。

一个 课程/老师/学生,可以具有很多 注册

几乎所有实体类都是相同的关系, enter image description here

因此,如果我们以一名学生为例,这将是我的地图

<!doctype html>
<html>
<head>
	<meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Auto Shop - Used Cars</title>
    <!--Include bootstrap CSS -->
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
	
	<!-- Include JQuery library -->	
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
	 
	<!-- Include external js file (JQuery_auto_shop.js) here -->
<script src="JQuery_auto_shop.js"></script>

	<style>
		 td{ padding: 5px; margin: 5px;}
		.addme { height: 28px; width: 80px; padding: 0; }
		.clm-label { background: #333; color: #fff;}
		.hide {display: none}	
	</style>
	
</head>
<body class='container'>
	<div class='col-md-9' >
    <h2>Choose a car type </h2> <!--drop down list -->
	<select id="car-category" name="car-category">
		<option value='null'>Loading....</option>
	</select>
	</div>
	<div class='col-md-9'>
	   <h2>Car List</h2> <!-- car list -->
		<table class='table hide' id='car-list'>
		<thead><!--car list table header -->
		<tr class='clm-label'> 
		   <th class='clm-label'>Stock ID</th>
		   <th class='clm-label'>Make</th>
		   <th class='clm-label'>Model</th>
		   <th class='clm-label'>Year</th>
		   <th class='clm-label'>Type</th>
		   <th class='clm-label'>Color</th>
		   <th class='clm-label'>Price</th>
		   <th class='clm-label'>Mileage</th>
		   <th class='clm-label'>Select</th>
		 </tr>  
		 </thead>
		 <tbody id='car-list'><!--car list table body -->
		 </tbody>
		</table>
	</div>
	<div class='col-md-3' id="cart">
		<h2>Shopping Cart</h2>
		<div>You have <span id="items">0</span>  items in your Shopping Cart</div>
		<table class='table hide' id='mycart'><!--Shopping Cart list table -->
		<thead><!--table header -->
			<tr>
				<th class='clm-label'>Stock Id</th>
				<th class='clm-label'>Make</th>
				<th class='clm-label'>Model</th>
				<th class='clm-label'>Price</th>
				<th class='clm-label'>Quantity</th>
				<th class='clm-label'>Type</th>
				<th class='clm-label'></th>
			</tr>
		</thead>
		<tbody><!--table body -->
		</tbody>
		</table>
	</div>
</div>

<div class='col-md-9' id="checkout">
    <h2>Check Out</h2>
	<table class='table hide' ><!--Check Out table -->
		<tr><th class='col-xs-4'>Subtotal: </th><td class='col-xs-2' id='sub-total'>0</td></tr>
		<tr><th class='col-xs-4'>Taxes (6%): </th><td class='col-xs-2' id='taxes'>0</td></tr>
		<tr><th class='col-xs-4'>Registration fee (5%): </th><td class='col-xs-2' id='registration'>0</td></tr>
		<tr><th class='col-xs-4'>Total due: </th><td class='col-xs-2' id='total'>0</td></tr>
	</table>
</div>

</body>
</html>

这将是 Register 类,它将是 Registration 表的实体。

import java.util.List;
import javax.persistence.*;


@Entity //here you define your class as entity which means is connected to the database 
@Table(name="students") //here you are referring the SQL table 

public class Student {
    @Id //to define it is a primary key
    @Column(name="student_id")  // name must be exact as the column in SQL
    private String studentID;

    @Column(name="first_name")
    private String firstName;

    @Column(name="last_name")
    private String lastName; 

    @Column(name="date_of_birth")
    private String dateOfBirth;

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

    //Establishing Mapping 

    @OneToMany(mappedBy="student_id",
               cascade=CascadeType.ALL,targetEntity = Student.class, fetch = FetchType.LAZY)
     List <Register> registers;

我的输出是:

import javax.persistence.*;


@Entity //here you define your class as entity which means is connected to the database 
@Table(name="REGISTRATION") //here you are referring the SQL table

public class Register {

    @Column(name="course_id")
    String course_id;

    @Column(name="course_name")
    String course_name;

    @Column(name="schedule")
    String schedule;

    @Id
    @Column(name="student_id")
    String student_id;

    @Column(name="employee_id")
    String employee_id;

    @ManyToOne(cascade=CascadeType.DETACH.MERGE.PERSIST.REFRESH.REMOVE,targetEntity = Course.class, fetch = FetchType.LAZY)
    @JoinTable(name="students",joinColumns=@JoinColumn(name="student_id"),inverseJoinColumns=@JoinColumn(name="student_id"))
    Student student;


    @ManyToOne(cascade=CascadeType.DETACH.MERGE.PERSIST.REFRESH.REMOVE,targetEntity = Course.class, fetch = FetchType.LAZY)
    @JoinTable(name="courses",joinColumns=@JoinColumn(name="course_id"),inverseJoinColumns=@JoinColumn(name="course_id"))
    Course course;

    @ManyToOne(cascade=CascadeType.DETACH.MERGE.PERSIST.REFRESH.REMOVE,targetEntity = Course.class, fetch = FetchType.LAZY)
    @JoinTable(name="teacher",joinColumns=@JoinColumn(name="employee_id"),inverseJoinColumns=@JoinColumn(name="employee_id"))
    Teacher teacher;

任何帮助将不胜感激。

0 个答案:

没有答案