zoukankan      html  css  js  c++  java
  • 多对多查询方式的一种写法

    Student 和 teacher 是多对多的关系:

    /**

    *class Student

    */

    @Entity
    @Table(name = "students")
    public class Student {

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        protected Integer id;
        @Column(length = 50, nullable = false)
        protected String name;
        @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY)
        @JoinTable(name = "studentteacher", joinColumns = { @JoinColumn(name = "sid",nullable=true) }, inverseJoinColumns = {
                @JoinColumn(name = "tid",nullable=true) })
        protected List<Teacher> teachers = new ArrayList<Teacher>();

        public Student() {
        }
      set / get ...
    }

    /**

    *class Teacher

    */

    @Entity
    @Table(name = "teachers")
    public class Teacher {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Integer id;
        @Column(length = 50, nullable = false)
        private String name;
        private Integer age;
        @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.EAGER)
        @JoinTable(name = "studentteacher", joinColumns = { @JoinColumn(name = "tid",nullable=true) }, inverseJoinColumns = {
                @JoinColumn(name = "sid",nullable=true) })
        private List<Student> students = new ArrayList<Student>();

        public Teacher() {

        }

      set / get ...
    }

    根据老师查找所有学生的方法可以如下:

    @PersistenceContext
    private EntityManager entityManager;

    public List<Student> getMyStudent(Teacher teacher) {
            Integer tid=teacher.getId();
            return entityManager.createQuery("select s from Student s inner join s.teachers as t  where t.id = :tid")
                    .setParameter("tid", tid).getResultList();
        }

  • 相关阅读:
    angular 中同级元素交替样式
    Type反射遍历类的属性
    对路径“xxxxx”的访问被拒绝。
    判断文件路径和文件是否存在
    List集合删除方法
    .NET 树型递归
    AngularJS使用ngMessages进行表单验证
    Windows 端口占用查询
    小程序页面高度控制
    如何理解多个域名解析到同一个服务器空间上?
  • 原文地址:https://www.cnblogs.com/ly-radiata/p/4747931.html
Copyright © 2011-2022 走看看