Что делать, если аннотация @mappedBy вставляет нулевое значение в БД? - PullRequest
0 голосов
/ 06 апреля 2020

Я создаю небольшой код, в котором я хочу установить sh отношения один-ко-многим между учеником и ноутбуками, использующими Hibernate. Вот мой код

Студент. java

    package com.cybersquare.hibernate.hibernate_demo;

    import java.util.ArrayList;
    import java.util.List;

    import javax.persistence.CascadeType;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;

    import com.mysql.cj.x.protobuf.MysqlxCrud.Collection;

    @Entity
    public class Student {

        @Id
        private int rollNo;
        private String name;
    /* To tell one student has many laptops and mappedBy = "student" gives the responsibility
        of mapping to student property in laptop table*/ 

        @OneToMany(mappedBy = "student")
        private List<Laptop> laptop = new ArrayList<Laptop>();

        public int getRollNo() {
            return rollNo;
        }
        public void setRollNo(int rollNo) {
            this.rollNo = rollNo;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public List<Laptop> getLaptop() {
            return laptop;
        }
        public void setLaptop(List<Laptop> laptop) {
            this.laptop = laptop;
        }

    }

Ноутбук. java

    package com.cybersquare.hibernate.hibernate_demo;

    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.ManyToOne;

    @Entity
    public class Laptop {

        @Id
        private int lid;
        private String lname;
        @ManyToOne
        private Student student;
        public int getLid() {
            return lid;
        }
        public void setLid(int lid) {
            this.lid = lid;
        }
        public String getLname() {
            return lname;
        }
        public void setLname(String lname) {
            this.lname = lname;
        }
        public Student getStudent() {
            return student;
        }
        public void setStudent(Student student) {
            this.student = student;
        }
    }

Приложение. java

    package com.cybersquare.hibernate.hibernate_demo;   

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration; 

    public class App 
    {
        public static void main( String[] args )
        {

            Laptop laptop = new Laptop();
            Student student = new Student();       

            laptop.setLid(101);
            laptop.setLname("Dell");

            student.setRollNo(1);
            student.setName("Surya");
            student.getLaptop().add(laptop);

            //Creating object for configuration class 
    //        And configure method to connect with hibernate configuration file
    //        Add annotated class is for adding class to be added to DB
            Configuration configuration = new Configuration().
                                        configure().
                                        addAnnotatedClass(Alien.class).
                                        addAnnotatedClass(Student.class).
                                        addAnnotatedClass(Laptop.class);

    //        Building a session factory for given configuration and SessionFactory is interface
            SessionFactory sessionFactory = configuration.buildSessionFactory();

    //        Opening a created session and Session is an interface
            Session session = sessionFactory.openSession();

    //          trasncaction beginning
            Transaction transaction = session.beginTransaction();

            session.save(student);
            session.save(laptop);

            transaction.commit();        
        }
    }

Проблема в том, что когда я не использую эту аннотацию @mappedBy, каждое соответствующее значение вставляется в новую таблицу, но после использования аннотации становится пустым значение вставляется в таблицу ноутбука вместо номера студенческого рулона. Пожалуйста, найдите скриншот ниже.

Screenshot of the DB table

Пожалуйста, помогите мне с этим. Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...