我正在尝试将一条记录保存到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
请帮帮我!!!!
由于
答案 0 :(得分:3)
虽然我无法立即帮助您查询,因为您很可能省略了堆栈跟踪的重要部分,我有一个解决方案:
不要使用INSERT HQL查询。这不是JPA的工作方式。而是创建一个new Emplyee()
对象,该对象应为@Entity
,并设置其属性,然后entityManager.persist(employee)
。
为了使其正常工作,您需要一个正在运行的事务。 entityManager.getTransaction().being()
会启动一个,而entityManager.getTransaction().commit()
会提交它。