Java 对象值不为';Hibernate中的表列不匹配
插入新记录时,我的PersonalInfo对象的属性与数据库列不匹配。Java 对象值不为';Hibernate中的表列不匹配,java,postgresql,hibernate,Java,Postgresql,Hibernate,插入新记录时,我的PersonalInfo对象的属性与数据库列不匹配。 public int save(PersonalInfo personalInfo){ session = sessionFactory.openSession(); session.beginTransaction(); int result = (Integer)
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.-
这两个都很好,最后一个的唯一缺点是表有8个字段,这意味着我必须在查询对象中编写太多的代码来设置每个参数 现在我尝试使用session.createNativeQuery(sqlQuery)
注释,然后我遇到了前面提到的问题。 我真的不知道发生了什么,这让我觉得可能缺少一个配置参数或类似的东西@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?我已经这样做了,但得到了相同的结果。