hibernate的setParameter功能不起作用
我正在尝试更新数据库中的记录,我正在使用以下代码进行更新hibernate的setParameter功能不起作用,hibernate,jakarta-ee,Hibernate,Jakarta Ee,我正在尝试更新数据库中的记录,我正在使用以下代码进行更新 System.out.print("Update"); Session session1 = HibernateUtil.getSessionFactory().openSession(); Query q = session1.createQuery("FROM Developer WHERE id = :id"); q.setParameter("id", 1); Developer developer = (Developer)q.
System.out.print("Update");
Session session1 = HibernateUtil.getSessionFactory().openSession();
Query q = session1.createQuery("FROM Developer WHERE id = :id");
q.setParameter("id", 1);
Developer developer = (Developer)q.list().get(0);
developer.setContact("Jack");
session1.update(developer);
一旦我运行了这个项目,它就会在控制台上显示以下内容,不再赘述
INFO: Update
INFO: Hibernate: select developer0_.id as id0_, developer0_.contact as contact0_,
developer0_.phone_1 as phone3_0_
from developer developer0_ where developer0_.id=?
Developer.java
package net.viralpatel.contact.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
*
* @author Jack
*/
@Entity
@Table(name="developer")
public class Developer implements Serializable {
private static final long serialVersionUID = -8767337896773261247L;
private int id;
private String contact;
private int phone_1;
@Id
@GeneratedValue
@Column(name="id")
public int getID() {
return id;
}
public void setID(int ID) {
this.id = ID;
}
@Column(name="contact")
public String getContact() {
return contact;
}
public void setContact(String Contact) {
this.contact = Contact;
}
@Column(name="phone_1")
public int getPhone_1() {
return phone_1;
}
public void setPhone_1(int Phone_1) {
this.phone_1 = Phone_1;
}
}
我可以使用以下代码将行插入到数据库的同一个表中
Session session1 = HibernateUtil.getSessionFactory().openSession();
session1.beginTransaction();
session1.save(developer);
session1.getTransaction().commit();
为什么不在更新方法中打开事务?您应该始终使用事务
Session session1 = HibernateUtil.getSessionFactory().openSession();
session1.beginTransaction();
Query q = session1.createQuery("FROM Developer WHERE id = :id");
q.setParameter("id", 1);
Developer developer = (Developer)q.list().get(0);
developer.setContact("Jack");
session1.update(developer);
session1.getTransaction().commit();
还有,为什么不使用session.get来获取id为的对象,而不使用query?
你可以这样做
Session session1 = HibernateUtil.getSessionFactory().openSession();
session1.beginTransaction();
Developer developer = (Developer)session1.get(Developer.class,1);
developer.setContact("Jack");
session1.update(developer);
session1.getTransaction().commit();
看看这个:太好了,我忘了包含事务:D我尝试过使用session1,但当我键入它时,自动完成显示其中没有包含一个参数的get方法!!!我的导入如下:import org.hibernate.classic.Session;导入net.viralpatel.contact.model.Developer;导入net.viralpatel.contact.util.HibernateUtil;导入org.hibernate.Query@JackRamzi是的,对不起,我从来没有记住方法签名,您必须添加类类型,java.io.Serializable)