JPA查询抛出异常

时间:2010-12-15 20:18:30

标签: java mysql hibernate jpa

我正在尝试将一条记录保存到mysql 5.1 db中。当我使用实体manager.persist()或merge()方法时,它甚至没有将记录保存到db,当我尝试使用像这样的本机插入语句时,它会抛出异常

Query query = entityManager.createNativeQuery("insert into Employee(firstName,lastName,phone,email) values(?,?,?,?);");
    query.setParameter(1, employee.getFirstName());
    query.setParameter(2, employee.getLastName());
    query.setParameter(3, employee.getPhone());
    query.setParameter(4, employee.getEmail());

以上查询引发的异常是

org.springframework.orm.jpa.JpaSystemException: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query

请帮帮我!!!!

由于

1 个答案:

答案 0 :(得分:3)

虽然我无法立即帮助您查询,因为您很可能省略了堆栈跟踪的重要部分,我有一个解决方案:

不要使用INSERT HQL查询。这不是JPA的工作方式。而是创建一个new Emplyee()对象,该对象应为@Entity,并设置其属性,然后entityManager.persist(employee)

为了使其正常工作,您需要一个正在运行的事务。 entityManager.getTransaction().being()会启动一个,而entityManager.getTransaction().commit()会提交它。