如何使用entitymanager在我的数据库中插入数据?

时间:2012-04-28 23:07:52

标签: java jpa

拜托,请帮助我

我有两个实体学生和地址@OneToOne关系

@Entity
public class Student implements Serializable {

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   private int idstudent;
   private String firstname;
   private String name;
   @OneToOne
   private Adress adress;
   //setters and getters
}

public class Adress implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int idadress;
    private String street;
    private String codezip;
    @OneToOne
    private Student student;
    //getters and setters
}

我想使用实体管理器插入数据我尝试通过它不能正常工作

@PersistenceContext(unitName = "JPADD")
EntityManager em;
Student student = new Student();
student.setfirstname("cc");
student.setname("cc");
Adress adress = new Adress();
adress.setstreet("ccccccccc");
adress.setstudent(student);
em.persist(adress)
em.persist(student);

帮助我pleaaaaaaaaase:)

1 个答案:

答案 0 :(得分:0)

我想猜猜你的问题是什么:

您正在尝试保留一个包含学生字段的地址。

现在,您的映射上似乎没有Cascade属性,因此,问题是您尝试保留一个学生不在您的数据库中的地址。

尝试交换最后两行,以便在地址之前持久化学生。

您也可以考虑更改

@OneToOne
private Student student;

@OneToOne(cascadeType = Cascade.PERSIST)
private Student student;

请记住,我只是想猜测,因为我没有足够的细节来帮助你!