Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠插入错误_Java_Hibernate_Rest_Jpa - Fatal编程技术网

Java 休眠插入错误

Java 休眠插入错误,java,hibernate,rest,jpa,Java,Hibernate,Rest,Jpa,错误消息: javax.persistence.RollbackException:提交 交易 我在保存用户数据时遇到问题。出现此错误后,项目的形式如下: 要保存的方法: public void save(User u) { EntityManager em = JPAUtil.getEntityManager(); EntityTransaction tx = em.getTransaction(); try

错误消息:

javax.persistence.RollbackException:提交 交易

我在保存用户数据时遇到问题。出现此错误后,项目的形式如下:

要保存的方法:

   public void save(User u)
   { 
       EntityManager em = JPAUtil.getEntityManager();
       EntityTransaction tx = em.getTransaction();        

        try 
        {
        tx.begin();
        if (u.getId_User()== null) {

            em.persist(u);
        } else {
            em.merge(u);
        }
        tx.commit();
    } catch (Exception ex) {
        ex.printStackTrace();
        if (tx != null && tx.isActive()) {
            tx.rollback();
        }
    } finally {
        em.close();
    }
}
接收表单数据的方法:

 public String addUser(Address a, User u)  
 {
    u.setAddress(a);
    userDAO.save(u);
    return "User saved successfully!";
}
Persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence      http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="consultoriowebPU">
    <!-- Hibernate -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/bd_consultorioweb?useUnicode=true&amp;characterEncoding=UTF-8&amp;characterSetResults=UTF-8"/> 
        <property name="javax.persistence.jdbc.user" value="root"/> 
        <property name="javax.persistence.jdbc.password" value=""/> 
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.format_sql" value="true" />            
    </properties>
</persistence-unit>
Address.class[模型]:

 @Entity
 public class User implements Serializable 
 {
    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue
    private Long Id_User;
    private String email_User;
    private String name_User;
    private String password_User;
    private int status_User;
    @ManyToOne
    private Address address;
    //Get and set..
  }
@Entity
public class Address implements Serializable
{
   private static final long serialVersionUID = 1L;

   @Id @GeneratedValue
   private Long Id_Address;
   private String Country;
   private String State;
   private String City;
   private String Neighborhood;
   private String Street;
   private Long Number;
   private String Complement;
   private String Zipcode;

   //Get and set..    
 }
以下是所使用的库/jar的列表:
在控制台中,只显示insert sql,然后错误消息和数据库中没有记录任何数据。

我假设您向用户填充的地址实体是分离的实体

我将向用户实体添加以下级联选项:

@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "address_id")
private Address address;

现在,当用户实体被持久化/合并时,地址实体也将被持久化/合并。

这真的很有效!但我不得不切换到:@JoinColumn(name=“address\u id”)非常感谢!伟大的很高兴我能帮上忙。。是的,它当然应该是。。一定是匆匆忙忙地给出了答案