表结构

student

class

Class

package auth.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name="class")
public class Room {
private int id;
private String name;
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
@Column(name="id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

Student

package auth.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table; @Entity
@Table(name="student")
public class Student {
private int id;
public int room_id;
private String name;
private Room room;
@GeneratedValue(strategy= GenerationType.AUTO)
@Id
@Column(name="id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name="room_id")
public int getRoom_id() {
return room_id;
}
public void setRoom_id(int room_id) {
this.room_id = room_id;
}
@ManyToOne
@JoinColumn(name = "room_id",insertable=false, updatable=false)
public Room getRoom() {
return room;
}
public void setRoom(Room room) {
this.room = room;
} }

测试

package auth.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSONObject; import auth.dao.ClassDao;
import auth.dao.StudentDao;
import auth.model.Room;
import auth.model.Student; @Service
public class StudentController {
@Autowired
private ClassDao dao;
@Autowired
private StudentDao stuDao;
public void add(){
Room room=new Room();
room.setName("10班");
Student s=new Student();
dao.save(room);
s.setName("小李5");
s.setRoom(room);
stuDao.save(s);
}
public void query(){
Student s=stuDao.findOne(2);
System.out.println(JSONObject.toJSONString(s)); }
public void query1(){
Room s=dao.findOne(2);
System.out.println(JSONObject.toJSONString(s)); } }

过程:

insert
into
class
(name)
values
(?) auth.model.Room{name=11班, id=20} insert
into
student
(name, room_id)
values
(?, ?)
2017-06-11 23:39:52,763 DEBUG [org.hibernate.id.IdentifierGeneratorHelper:94] - Natively generated identity: 24
2017-06-11 23:39:52,766 DEBUG [org.hibernate.engine.transaction.spi.AbstractTransactionImpl:175] - committing
2017-06-11 23:39:52,767 DEBUG [org.hibernate.event.internal.AbstractFlushingEventListener:149] - Processing flush-time cascades
2017-06-11 23:39:52,767 DEBUG [org.hibernate.event.internal.AbstractFlushingEventListener:189] - Dirty checking collections
2017-06-11 23:39:52,768 DEBUG [org.hibernate.event.internal.AbstractFlushingEventListener:123] - Flushed: 0 insertions, 0 updates, 0 deletions to 1 objects
2017-06-11 23:39:52,768 DEBUG [org.hibernate.event.internal.AbstractFlushingEventListener:130] - Flushed: 0 (re)creations, 0 updates, 0 removals to 0 collections
2017-06-11 23:39:52,772 DEBUG [org.hibernate.internal.util.EntityPrinter:114] - Listing entities:
2017-06-11 23:39:52,772 DEBUG [org.hibernate.internal.util.EntityPrinter:121] - auth.model.Student{room_id=0, name=小李6, id=24, room=auth.model.Room#20}
{"id":2,"name":"李明","room":{"id":1,"name":"12班"},"room_id":1}
{"id":2,"name":"24班"}

数据库结果:

jpa单向多对一关联映射的更多相关文章

  1. Hibernate框架单向多对多关联映射关系

    建立单向多对多关联关系    Project.java (项目表)                private Integer proid;                private Strin ...

  2. jpa单向一对多关联映射

    如果在一的@OneToMany有@manyToOne则是双向一对多关联,如果在多的那面没有@manyToOne关联则是单向一对多关联 class和student是一对多的关系 表结构 student ...

  3. Hibernate框架单向多对一关联映射关系

    建立多对一的单向关联关系    Emp.java            private Integer empNo //员工编号            private String empName / ...

  4. Hibernate(六)——多对多关联映射

    前面几篇文章已经较讲解了三大种关联映射,多对多映射就非常简单了,不过出于对关联映射完整性的考虑,本文还是会简要介绍下多对多关联映射. 1.单向多对多关联映射 情景:一个用户可以有多个角色,比如数据录入 ...

  5. 一口一口吃掉Hibernate(六)——多对多关联映射

    今天来说说hibernate中的多对多关联映射,多对多关联映射涉及到单向映射和双向映射2种. 首先举个多对多关联例子:用户User和角色Role,一个用户可以属于多个角色,一个角色可以有多个用户.这就 ...

  6. 【SSH系列】Hibernate映射 -- 多对多关联映射

         映射原理 在数据库学习阶段,我们知道,如果实体和实体之间的关系是多对多,那么我们就抽出来第三张表,第一张表和第二张表的主键作为第三表的联合主键,结合我们的hibernate,多对多关联,无论 ...

  7. 016 多对多关联映射 单向(many-to-many)

    一般的设计中,多对多关联映射,需要一个中间表 Hibernate会自动生成中间表 Hibernate使用many-to-many标签来表示多对多的关联 多对多的关联映射,在实体类中,跟一对多一样,也是 ...

  8. java之hibernate之单向的多对多关联映射

    这篇 单向的多对多关联映射 1.如何在权限管理中,角色和权限之间的关系就是多对多的关系,表结构为: 2.类结构 Permission.java public class Permission impl ...

  9. (Hibernate进阶)Hibernate映射——多对多关联映射(八)

    多对多映射是现实生活中最常见的映射,也是最容易理解的映射.废话少说,直接开始. 映射原理 不论是单向关联还是双向关联都是通过第三张表,将两个表中的主键放到第三张做一个关联.用第三张表来解决可能会造成数 ...

随机推荐

  1. Genymotion INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

    出现这个错误的原因是Genymotion默认的处理器是x86的,不是arm的.所以安装的时候会出错,仅仅要把x86转换成arm就能够了. 转换方法: 1.下载转换的zip文件:X86 to ARM 2 ...

  2. atitit。解决 No suitable Log constructor。。NoClassDefFoundError: org/apache/log4j/Category 找不到类的

    atitit.解决 No suitable Log constructor..NoClassDefFoundError: org/apache/log4j/Category 找不到类的 1. 深的层次 ...

  3. CYQ聊天遇到的问题

    action.Data["yj_id"].Value  用action.Get<int>("yj_id"); 这种写法安全 如果是代码里怎么判断,a ...

  4. 【C语言】23-typedef

    一.typedef作用简介 * 我们可以使用typedef关键字为各种数据类型定义一个新名字(别名). 1 #include <stdio.h> 2 3 typedef int Integ ...

  5. 1、改变 vs编辑器的主题

    打开 visual studio, 在菜单栏选择  工具 -> 扩展和更新 -> 输入 “color theme” 安装完成后,选择样式. 选择好样式后, vs 立即改变主题.再次打开样式 ...

  6. Eclipse上Hadoop插件中Run On Hadoop原理[转]

    通过Eclipse的hadoop插件中的"run on hadoop"命令的原理:它不是把jar包发送到hadoop集群上去运行,而只是使用了hadoop集群上的hdfs,从hdf ...

  7. vue项目中,main.js,App.vue,index.html如何调用

    1.main.js是我们的入口文件,主要作用是初始化vue实例,并引入所需要的插件 2.App.vue是我们的主组件,所有页面都是在App.vue下进行切换的.其实你也可以理解为所有的路由也是App. ...

  8. jQuery新建HTML Element

    举个例: 创建一个<i>HelloWorld.</i> var italicText = $("<i></i>").text(&qu ...

  9. jquery 查找元素

    /************ 查找父元素 *************/ //closest()方法 $("#mytd1").bind("click",functi ...

  10. Android——布局(线性布局linearLayout,表格布局TableLayout,帧布局FrameLayout)

    线性布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi ...