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)