拜托,请帮助我
我有两个实体学生和地址@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:)
答案 0 :(得分:0)
我想猜猜你的问题是什么:
您正在尝试保留一个包含学生字段的地址。
现在,您的映射上似乎没有Cascade属性,因此,问题是您尝试保留一个学生不在您的数据库中的地址。
尝试交换最后两行,以便在地址之前持久化学生。
您也可以考虑更改
@OneToOne
private Student student;
到
@OneToOne(cascadeType = Cascade.PERSIST)
private Student student;
请记住,我只是想猜测,因为我没有足够的细节来帮助你!