Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在hibernate中通过ArrayList保存多个对象?_Java_Hibernate_Arraylist - Fatal编程技术网

Java 如何在hibernate中通过ArrayList保存多个对象?

Java 如何在hibernate中通过ArrayList保存多个对象?,java,hibernate,arraylist,Java,Hibernate,Arraylist,我有一个学生实体。我的想法是在ArrayList中收集多个student对象,并将该列表中的所有对象保存到数据库中。何时使用@ElementCollection注释?它适用于这样的情况吗 学生: package basic; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persiste

我有一个学生实体。我的想法是在ArrayList中收集多个student对象,并将该列表中的所有对象保存到数据库中。何时使用@ElementCollection注释?它适用于这样的情况吗

学生

package basic;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    public Student() {

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + "]";
    }

    public Student(String name) {
        this.name = name;
    }

}
package basic;

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

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

public class Runner {

    public static void main(String[] args) {

        SessionFactory sessionFactory = new Configuration().configure("/basic/hibernate.cfg.xml").buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        List<Student> students = new ArrayList<>();

        students.add(new Student("Michael"));
        students.add(new Student("Dave"));
        students.add(new Student("Tom"));
        students.add(new Student("Dinesh"));
        students.add(new Student("Lakshman"));
        students.add(new Student("Cruise"));

        session.save(students);

        session.getTransaction().commit();
        session.close();
    }

}
跑步者

package basic;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;

    public Student() {

    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + "]";
    }

    public Student(String name) {
        this.name = name;
    }

}
package basic;

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

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

public class Runner {

    public static void main(String[] args) {

        SessionFactory sessionFactory = new Configuration().configure("/basic/hibernate.cfg.xml").buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        List<Student> students = new ArrayList<>();

        students.add(new Student("Michael"));
        students.add(new Student("Dave"));
        students.add(new Student("Tom"));
        students.add(new Student("Dinesh"));
        students.add(new Student("Lakshman"));
        students.add(new Student("Cruise"));

        session.save(students);

        session.getTransaction().commit();
        session.close();
    }

}

@ElementCollection应该用来定义对象之间的关系-这里有很好的解释


要保存对象列表,您需要按对象进行迭代,例如->

您必须执行以下操作:

for(Student student : students) {
    session.save(student);
}

若要保存实体,应将其映射。ArrayList不是映射的实体。学生有地图,所以你应该单独保存。

我现在知道了。非常感谢。