如何使用Hibernate OGM在Array中存储文档?

时间:2017-09-13 09:38:58

标签: java hibernate-ogm

我是Hibernate OGM的新手。在这里,我使用MongoDB作为我的数据库。我有三个POJO课程和员工和地址和工作。 1. Employee.java

option("multiLine", true)

2。 Address.java

import java.util.ArrayList;
import java.util.List;
import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OrderColumn;
import org.bson.types.ObjectId;
@Entity
public class Employee {
    private String name;
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private ObjectId id;
    private String company;
    private int empId;
    @Embedded
    private Address add;
    @ElementCollection
    private List<String> tech;
    @ElementCollection
    @OrderColumn(name="CompanyName")
    private List<Work> work; // = new ArrayList<Work>();

    //setters and getters

    public Address getAdd() {
        return add;
    }

    public void setAdd(Address add) {
        this.add = add;
    }

    public List<String> getTech() {
        return tech;
    }

    public void setTech(List<String> tech) {
        this.tech = tech;
    }

    public List<Work> getWork() {
        return work;
    }

    public void setWork(List<Work> work) {
        this.work = work;
    }

    @Override
    public String toString() {
        return "id=" + id + ", name=" + name + ", company=" + company +","
                + "empId="+empId; //+"work "+work;
    }
}

3.Work.java

import javax.persistence.Embeddable;
@Embeddable
public class Address {
    private String localAdd;
    private String premAdd;
    //setters and getters
}

在这里,我将使用以下语句在Mongodb中创建文档

import javax.persistence.Embeddable;
@Embeddable
public class Work {
    private String CompanyName;
    private String loc;
    private double totalexp;
    //setters and getters
}

我低于错误

entityManagerFactory = HibernateOGMUtil.getEntityManagerFactory();
em = entityManagerFactory.createEntityManager();
Employee employee = new Employee();
Address address = new Address();
List<String> techLst = new ArrayList<String>();
List<Work> worklst = new ArrayList<Work>();
Work objwork1 = new Work();
techLst.add("Java");
techLst.add("SQL");
techLst.add("JavaScript");
address.setLocalAdd("Mumbai");
address.setPremAdd("Chennai");
objwork1.setCompanyName("XXX");
objwork1.setLoc("Mumbai");
objwork1.setTotalexp(5.2);
worklst.add(objwork1);
employee.setName("XYZ");
employee.setCompany("YYYY");
employee.setEmpId(12346);
employee.setAdd(address);
employee.setTech(techLst);
employee.setWork(worklst);
em.getTransaction().begin();
em.persist(employee);
em.getTransaction().commit();

如果我从Employee中删除Work对象并注释&#34; employee.setWork(worklst)&#34;然后它在mongodb中插入记录。任何人都可以帮我解决这个问题吗?

0 个答案:

没有答案