gpt4 book ai didi

java - 对象值与 Hibernate 中的表列不匹配

转载 作者:行者123 更新时间:2023-11-29 13:51:02 26 4
gpt4 key购买 nike

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

我已经尝试了一些方法来做到这一点,到目前为止我没有遇到任何问题。

我试过以下方法

  • 1.- session.save(Object)
  • 2.- session.createNativeQuery(sqlQuery)

    它们都工作正常,最后一个的唯一缺点是表有 8 个字段,这意味着我必须编写太多代码来将每个参数设置到 Query 对象中。

    现在我尝试使用@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;
}

最后是 main 方法。

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 得到的输出。

enter image description here

因为每个人都可以看到值与列不匹配。抱歉表格列名称,我决定将西类牙语翻译成英语以便更多人能够帮助我

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

最佳答案

下面的行从 main 方法中保存了 datosPersonales 而不是 personalInfo。

新的 PersonalInfoDAO(sessionFactory).save(datosPersonales);

personalInfo 有正确的信息而 datosPersonales 没有。

关于java - 对象值与 Hibernate 中的表列不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41201654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com