如果在一的@OneToMany有@manyToOne则是双向一对多关联,如果在多的那面没有@manyToOne关联则是单向一对多关联

class和student是一对多的关系

表结构

student

class

Class

  1. package auth.model;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import javax.persistence.CascadeType;
  5. import javax.persistence.Column;
  6. import javax.persistence.Entity;
  7. import javax.persistence.GeneratedValue;
  8. import javax.persistence.GenerationType;
  9. import javax.persistence.Id;
  10. import javax.persistence.JoinColumn;
  11. import javax.persistence.OneToMany;
  12. import javax.persistence.Table;
  13. @Entity
  14. @Table(name="class")
  15. public class Room {
  16. private int id;
  17. private String name;
  18. private List<Student> students=new ArrayList<Student>();
  19. @Id
  20. @GeneratedValue(strategy= GenerationType.AUTO)
  21. @Column(name="id")
  22. public int getId() {
  23. return id;
  24. }
  25. public void setId(int id) {
  26. this.id = id;
  27. }
  28. @Column(name="name")
  29. public String getName() {
  30. return name;
  31. }
  32. public void setName(String name) {
  33. this.name = name;
  34. }
  35. @OneToMany(cascade = CascadeType.ALL,fetch=FetchType.EAGER)
        @JoinColumn(name="room_id")
        public List<Student> getStudents() {
           return students;
        }
        public void setStudents(List<Student> students) {
           this.students = students;
        }
    }

Student

  1. package auth.model;
  2. import javax.persistence.Column;
  3. import javax.persistence.Entity;
  4. import javax.persistence.GeneratedValue;
  5. import javax.persistence.GenerationType;
  6. import javax.persistence.Id;
  7. import javax.persistence.Table;
  8. @Entity
  9. @Table(name="student")
  10. public class Student {
  11. private int id;
  12. public int room_id;
  13. private String name;
  14. @GeneratedValue(strategy= GenerationType.AUTO)
  15. @Id
  16. @Column(name="id")
  17. public int getId() {
  18. return id;
  19. }
  20. public void setId(int id) {
  21. this.id = id;
  22. }
  23. @Column(name="room_id")
  24. public int getRoom_id() {
  25. return room_id;
  26. }
  27. public void setRoom_id(int room_id) {
  28. this.room_id= room_id;
  29. }
  30. @Column(name="name")
  31. public String getName() {
  32. return name;
  33. }
  34. public void setName(String name) {
  35. this.name = name;
  36. }
  37. }

Dao

  1. package auth.dao;
  2. import org.springframework.data.jpa.repository.JpaRepository;
  3. import auth.model.MyClass;
  4. public interface ClassDao extends JpaRepository<MyClass, Integer>{
  5. }

测试

  1. @Autowired
  2. private ClassDao dao;
  3. public void add(){
  4. Room room=new Room();
  5. room.setName("5班");
  6. Student s=new Student();
  7. s.setName("小王");
  8. room.getStudents().add(s);
  9. dao.save(room);
  10. Student s1=new Student();
  11. s.setName("小李");
  12. room.getStudents().add(s1);
  13. dao.save(room);
  14. }
  1. public void query(){
  2. Student s=stuDao.findOne(2);
  3. System.out.println(JSONObject.toJSONString(s));
  4. }
  5. public void query1(){
  6. Rooms=dao.findOne(2);
  7. System.out.println(JSONObject.toJSONString(s));
  8. }
  1.  

过程

  1. insert
  2. into
  3. class
  4. (name)
  5. values
  6. (?)
  7. 2017-06-04 23:56:04,251 DEBUG [org.hibernate.id.IdentifierGeneratorHelper:94] - Natively generated identity: 3
  8. 2017-06-04 23:56:04,272 DEBUG [org.hibernate.engine.spi.ActionQueue:196] - Executing identity-insert immediately
  9. 2017-06-04 23:56:04,273 DEBUG [org.hibernate.SQL:109] -
  10. insert
  11. into
  12. student
  13. (room_id, name)
  14. values
  15. (?, ?)

第一个查询只能查出Student的数据,第二个可以把Class和Student的数据查出来(要设置fetch=FetchType.EAGER

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

  1. jpa双向一对多关联映射

    表结构 Room类 package auth.model; import java.util.HashSet; import java.util.Set; import javax.persisten ...

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

    表结构 student class Class package auth.model; import javax.persistence.Column; import javax.persistenc ...

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

    这篇主要讲hiberante中的 单向一对多关联映射 1.在应用中,有时候需要从一的一端获取多的一端的数据.比如:查看某个分类下的所有书籍信息:查看某个订单下的所有商品等. 2.在一对多的关联关系中, ...

  4. 014 一对多关联映射 单向(one-to-many)

    在对象模型中,一对多的关联关系,使用集合来表示. 实例场景:班级对学生:Classes(班级)和Student(学生)之间是一对多的关系. 多对一.一对多的区别: 多对一关联映射:在多的端加入一个外键 ...

  5. JPA 单向一对多关联关系

    映射单向一对多的关联关系 1.首先在一的一端加入多的一端的实体类集合 2.使用@OneToMany 来映射一对多的关联关系3.使用@JoinColumn 来映射外键列的名称4.可以使用@OneToMa ...

  6. (Hibernate进阶)Hibernate映射——一对多关联映射(七)

    一对多关联映射 映射原理 一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端.关联关系都是由多端维护,只是在写映射时发生了变化. 多对一和一对多的区别 多对一和 ...

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

        映射原理       一对多关联映射和多对一关联映射的映射原理是一样一样的,所以说嘛,知识都是相通的,一通百通,为什么说一对多关联映射和多对一关联映射是一样的呢?因为她们都是在多的一端加入一个 ...

  8. hihernate一对多关联映射

    hihernate一对多关联映射 一对多关联映射利用了多对一关联映射原理 多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一 一对多关联映射:在多的一端加入一个外键指向一的一端 ...

  9. 【SSH进阶之路】Hibernate映射——一对多关联映射(七)

    上上篇博文[SSH进阶之路]Hibernate映射——一对一单向关联映射(五),我们介绍了一对一的单向关联映射,单向是指只能从人(Person)这端加载身份证端(IdCard),但是反过来,不能从身份 ...

随机推荐

  1. C#指南,重温基础,展望远方!(1)C#语言介绍

    1.C#(读作“See Sharp”)是一种简单易用的新式编程语言,不仅面向对象,还类型安全. C# 源于 C 语言系列,C.C++.Java 和 JavaScript 程序员很快就可以上手使用. 2 ...

  2. 服务容器——laravel服务器容器(未完)

    参考: https://www.insp.top/learn-laravel-container https://www.cnblogs.com/lilili/p/6953749.html

  3. memcahced&redis命令行cmd下的操作

    一.memcahced   1.安装 执行memcached.exe -d install 把memcached加入到服务中 执行memcached.exe -d uninstall 卸载memcac ...

  4. Javascript实现真实字符串剩余字数提示

    //文本框剩余字数提示(字符大小) function textLimitCheckSj(thisArea, maxLength, SpanId) { var str = thisArea.value; ...

  5. Vivado的helloword程序:软件工程部分

    建立工程 Export结束后,会自动启动SDK.界面如下.可以看到工程浏览器Project Explorer中已经有一个硬件平台hw_platform_0,里面有一系列配置和初始化文件.不要修改这些文 ...

  6. [iOS]delegate和protocol

    转自:http://haoxiang.org/2011/08/ios-delegate-and-protocol/ 今天上班和同事讨论工程怎么组织的时候涉及到这个话题.iOS开发上对delegate使 ...

  7. Effective JavaScript Item 37 认识this的隐式指向

    本系列作为Effective JavaScript的读书笔记. CSV数据通常都会被某种分隔符进行分隔.所以在实现CSV Reader时,须要支持不同的分隔符.那么,非常自然的一种实现就是将分隔符作为 ...

  8. iOS7 SDK新特性

    春风又绿加州岸.物是人非又一年.WWDC 2013 keynote落下帷幕,新的iOS开发旅程也由此开启.在iOS7界面重大变革的背后,开发人员们须要知道的又有哪些呢.同去年一样,我会先简单纵览地介绍 ...

  9. makefile之shell函数

    shell函数不同于除"wildcard"函数之外的其它函数.make可以使用它来和外部通信. 函数功能:函数"shell"所实现的功能和shell中的引用(` ...

  10. JS高程3:BOM-window对象

    全局作用域 BOM的核心就是window对象,他是浏览器的一个实例. 它既是JS访问浏览器窗口的接口,又是ECMAScript中的global对象. 在全局作用域中,global对象,this对象,w ...