【问题标题】:how to insert data in my databse using entitymanger?如何使用 entitymanager 在我的数据库中插入数据?
【发布时间】:2012-05-09 05:56:38
【问题描述】:

请你帮帮我

我有两个由@OneToOne 关系关联的实体 Student 和 Adress

@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);

请帮帮我 :)

【问题讨论】:

  • 我发布的代码在我删除 adress.setstudent(student) 时效果很好
  • 问题不在于它没有实例化一个EntityManger
  • 没注意注解,Stack Overflow is not a Mind Reader or Crystal Ball 依然适用。
  • 您会得到什么异常(如果有)?您的 EntityManager 没有被实例化?请提供更多信息,例如您正在使用的技术、服务器、提供商等。
  • 请提供更多信息。也许你的persistence.xml,但最低限度是什么不起作用。是否抛出异常,什么都没有保存到数据库中,太多的东西保存在数据库中。是否将正确的数量保存在数据库中,但数据是否错误。 ... 等等。你知道你已经创建了两个单向关系而不是一个鸟形关系吗? PersistenceUnit 是否创建表。 ... 等等。基本上:给我们更多

标签: java jpa


【解决方案1】:

我在猜你的问题是什么:

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

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

尝试交换最后两行,以便将 Student 保留在地址之前。

你也可以考虑换个

@OneToOne
private Student student;

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2021-12-30
    相关资源
    最近更新 更多