Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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 对象值不为';Hibernate中的表列不匹配_Java_Postgresql_Hibernate - Fatal编程技术网

Java 对象值不为';Hibernate中的表列不匹配

Java 对象值不为';Hibernate中的表列不匹配,java,postgresql,hibernate,Java,Postgresql,Hibernate,插入新记录时,我的PersonalInfo对象的属性与数据库列不匹配。 public int save(PersonalInfo personalInfo){ session = sessionFactory.openSession(); session.beginTransaction(); int result = (Integer)

插入新记录时,我的PersonalInfo对象的属性与数据库列不匹配。

public int save(PersonalInfo personalInfo){                             
    session = sessionFactory.openSession();             
         session.beginTransaction();            
             int result = (Integer)session.save(personalInfo);      
         session.getTransaction().commit();     
    session.close();                        
    return result;
}
public static void main(String args[]){

    SessionFactory sessionFactory = buildSessionFactory();

    // I've ommited some attributes that have a default value so they're initialized within the constructor
    PersonalInfo personalInfo= new PersonalInfoBuilder("Francisco","Hernandez","Salgado")
                    .withLogInInfo(30, "myPass")
                    .withType("student").build();

    System.out.println(personalInfo);

    new PersonalInfoDAO(sessionFactory).save(personalInfo);             

}
我尝试了一些方法来做这件事,到目前为止我还没有遇到任何问题

我试过以下方法

  • 1.-
    session.save(对象)
  • 2.-
    session.createNativeQuery(sqlQuery)

    这两个都很好,最后一个的唯一缺点是表有8个字段,这意味着我必须在查询对象中编写太多的代码来设置每个参数

    现在我尝试使用
    @SQLInsert
    注释,然后我遇到了前面提到的问题。 我真的不知道发生了什么,这让我觉得可能缺少一个配置参数或类似的东西

我已经检查过,通过从控制台获取此输出,我正在以正确的顺序传递信息。

PersonalInfo [userId=30, password=myPass, status=0, type=student, firstName=Francisco, lastName=Hernandez, secondLastName=Salgado, sessionId=]

Hibernate: INSERT INTO personal_info (userId, password, status, type, firstName, lastName, secondLastName, sessionId) VALUES(?, MD5(?) , ?, ?, ?, ?, ?, ?)
这是我的PersonalInfo类中的一段代码,演示了注释的使用

@Entity(name="personal_info")
@SQLInsert(sql="INSERT INTO personal_info (userId, password, status, type, firstName, lastName, secondLastName, sessionId)"
                + " VALUES(?, MD5(?) , ?, ?, ?, ?, ?, ?)")

public class PersonalInfo {

    @Id
    @Column(name = "userId")
    private int userId;

    @Column(name = "password")
    private String password;

    @Column(name = "status")
    private int status;

    @Column(name = "type")
    private String type;

    @Column(name = "firstName")
    private String firstName;

    @Column(name ="lastName")
    private String lastName;

    @Column(name ="secondLastName")
    private String secondLastName;

    @Column(name ="sessionId")
    private String sessionId;

}
执行插入操作的方法。

public int save(PersonalInfo personalInfo){                             
    session = sessionFactory.openSession();             
         session.beginTransaction();            
             int result = (Integer)session.save(personalInfo);      
         session.getTransaction().commit();     
    session.close();                        
    return result;
}
public static void main(String args[]){

    SessionFactory sessionFactory = buildSessionFactory();

    // I've ommited some attributes that have a default value so they're initialized within the constructor
    PersonalInfo personalInfo= new PersonalInfoBuilder("Francisco","Hernandez","Salgado")
                    .withLogInInfo(30, "myPass")
                    .withType("student").build();

    System.out.println(personalInfo);

    new PersonalInfoDAO(sessionFactory).save(personalInfo);             

}
最后是主要方法。

public int save(PersonalInfo personalInfo){                             
    session = sessionFactory.openSession();             
         session.beginTransaction();            
             int result = (Integer)session.save(personalInfo);      
         session.getTransaction().commit();     
    session.close();                        
    return result;
}
public static void main(String args[]){

    SessionFactory sessionFactory = buildSessionFactory();

    // I've ommited some attributes that have a default value so they're initialized within the constructor
    PersonalInfo personalInfo= new PersonalInfoBuilder("Francisco","Hernandez","Salgado")
                    .withLogInInfo(30, "myPass")
                    .withType("student").build();

    System.out.println(personalInfo);

    new PersonalInfoDAO(sessionFactory).save(personalInfo);             

}
以及插入后从postgresql获得的输出。

public int save(PersonalInfo personalInfo){                             
    session = sessionFactory.openSession();             
         session.beginTransaction();            
             int result = (Integer)session.save(personalInfo);      
         session.getTransaction().commit();     
    session.close();                        
    return result;
}
public static void main(String args[]){

    SessionFactory sessionFactory = buildSessionFactory();

    // I've ommited some attributes that have a default value so they're initialized within the constructor
    PersonalInfo personalInfo= new PersonalInfoBuilder("Francisco","Hernandez","Salgado")
                    .withLogInInfo(30, "myPass")
                    .withType("student").build();

    System.out.println(personalInfo);

    new PersonalInfoDAO(sessionFactory).save(personalInfo);             

}

正如每个人所看到的,这些值与列不匹配。 很抱歉表中的列名,我决定将其从西班牙语翻译成英语,以便更多的人能够帮助我

PersonalInfo [userId=30, password=myPass, status=0, type=student, firstName=Francisco, lastName=Hernandez, secondLastName=Salgado, sessionId=]

下面的行保存DatoPersonales,而不是main方法中的personalInfo

新的PersonalInfoDAO(sessionFactory).save(DatoPersonales)


personalInfo有正确的信息,DatoPersonales没有

下面的行保存DatoPersonales,而不是main方法中的personalInfo

新的PersonalInfoDAO(sessionFactory).save(DatoPersonales)


personalInfo有正确的信息,DatoPersonales没有

这是一个类型错误,DatoPersonales它实际上是PersonalInfo它是一个类型错误,DatoPersonales它实际上是PersonalInfo您是否尝试过从插入查询中删除md5?我已经这样做了,但得到了相同的结果。您是否尝试过从插入查询中删除md5?我已经这样做了,但得到了相同的结果。