Java 如何为“创造条件”;冬眠“;检查数据库

Java 如何为“创造条件”;冬眠“;检查数据库,java,hibernate,Java,Hibernate,我做了一个程序,如果数据库字段中的值不相同,它将保存数据 如果数据库字段中有相同的值,则会更新数据 我一直想让“hibernate”可以检查数据库中的值 任何帮助都是我的荣幸 提前谢谢 现在我可以给hibernate设置条件来检查数据是否存在。。。当条件为真时,此代码工作,但当条件为假时,我得到一些错误 更新我的代码 Query query = session.createQuery("from CoreService where MODULE_NAME= :lolo1

我做了一个程序,如果数据库字段中的值不相同,它将保存数据 如果数据库字段中有相同的值,则会更新数据

我一直想让“hibernate”可以检查数据库中的值

任何帮助都是我的荣幸 提前谢谢

现在我可以给hibernate设置条件来检查数据是否存在。。。当条件为真时,此代码工作,但当条件为假时,我得到一些错误

更新我的代码

            Query query = session.createQuery("from CoreService where MODULE_NAME= :lolo1 and OBJECT_NAME= :lolo2 and SYSTEM_ID= :lolo3 and LOG_DATE= :lolo4");
            query.setParameter("lolo1", module);
            query.setParameter("lolo2", object);
            query.setParameter("lolo3", system_id);
            query.setParameter("lolo4", log_date);

            @SuppressWarnings("unchecked")
            List<CoreService> result = query.list();
            if(result.isEmpty()){
                System.out.println("LOLOH");

                CoreService data = new CoreService();
                data.setMODULE_NAME(module);
                data.setCATEGORY("SYSTEMID");
                data.setSYSTEM_ID(system_id);
                data.setCOUNTER_SYSTEM(1);
                data.setOBJECT_NAME(object);
                data.setCOUNTER_SERVICE(1);
                data.setLOG_DATE(log_date);
                data.setUPDATE_LOG(update_log);

                session.beginTransaction();
                session.save(data);
                session.getTransaction().commit();

            }else{
                System.out.println("LELEH");

                CoreService data = new CoreService();

                data.setCATEGORY("SYSTEMID");

                data.setCOUNTER_SYSTEM(2);

                data.setCOUNTER_SERVICE(2);



                session.beginTransaction();
                session.update(data);
                session.getTransaction().commit();

            }
这是我的班级模型(注意:我的ID是自动递增的)


在Else块中,您必须从result获取数据,然后设置所需的值

else{
                System.out.println("LELEH");

                CoreService data = (CoreService )result.get(0);

                data.setCATEGORY("SYSTEMID");

                data.setCOUNTER_SYSTEM(2);

                data.setCOUNTER_SERVICE(2);



                session.beginTransaction();
                session.update(data);
                session.getTransaction().commit();

            }

请把你的代码贴在这里!!你是怎么做到的?有什么问题吗?@Mohsinazem对不起,伙计,我忘了发代码了@Frederic我一直在尝试制作
列表
,但我无法让hibernate检查数据库是否有相同的值你应该发布最小的代码来重现问题,&不是您正在处理的一堆代码&与问题无关。您的id生成策略不正确,因为异常情况是
给定对象的标识符为空。你能发布你的实体类和数据库定义吗?
package id.co.bni.coreservice.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


@Entity
@Table(name = "coreservice")
public class CoreService {

private Integer ID;
private String MODULE_NAME;
private String CATEGORY;
private String SYSTEM_ID;
private Integer COUNTER_SYSTEM;
private String OBJECT_NAME;
private Integer COUNTER_SERVICE;
private Date LOG_DATE;
private Date UPDATE_LOG;

/**
 * @return
 */

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID", unique=true, nullable=false)
public Integer getID() {
    return ID;
}

public void setID(Integer ID) {
    this.ID = ID;
}

@Column(name = "MODULE_NAME")
public String getMODULE_NAME() {
    return MODULE_NAME;
}

public void setMODULE_NAME(String MODULE_NAME) {
    this.MODULE_NAME = MODULE_NAME;
}

@Column(name = "CATEGORY")
public String getCATEGORY() {
    return CATEGORY;
}

public void setCATEGORY(String CATEGORY) {
    this.CATEGORY = CATEGORY;
}

@Column(name = "SYSTEM_ID")
public String getSYSTEM_ID() {
    return SYSTEM_ID;
}

public void setSYSTEM_ID(String SYSTEM_ID) {
    this.SYSTEM_ID = SYSTEM_ID;
}

@Column(name = "COUNTER_SYSTEM")
public Integer getCOUNTER_SYSTEM() {
    return COUNTER_SYSTEM;
}

public void setCOUNTER_SYSTEM(Integer COUNTER_SYSTEM) {
    this.COUNTER_SYSTEM = COUNTER_SYSTEM;
}

@Column(name = "OBJECT_NAME")
public String getOBJECT_NAME() {
    return OBJECT_NAME;
}

public void setOBJECT_NAME(String OBJECT_NAME) {
    this.OBJECT_NAME = OBJECT_NAME;
}

@Column(name = "COUNTER_SERVICE")
public Integer getCOUNTER_SERVICE() {
    return COUNTER_SERVICE;
}

public void setCOUNTER_SERVICE(Integer COUNTER_SERVICE) {
    this.COUNTER_SERVICE = COUNTER_SERVICE;
}

@Temporal(TemporalType.DATE)
@Column(name = "LOG_DATE")
public Date getLOG_DATE() {
    return LOG_DATE;
}

public void setLOG_DATE(Date LOG_DATE) {
    this.LOG_DATE = LOG_DATE;
}

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "UPDATE_LOG")
public Date getUPDATE_LOG() {
    return UPDATE_LOG;
}

public void setUPDATE_LOG(Date UPDATE_LOG) {
    this.UPDATE_LOG = UPDATE_LOG;
}


/**
 * @param args
 */
}
else{
                System.out.println("LELEH");

                CoreService data = (CoreService )result.get(0);

                data.setCATEGORY("SYSTEMID");

                data.setCOUNTER_SYSTEM(2);

                data.setCOUNTER_SERVICE(2);



                session.beginTransaction();
                session.update(data);
                session.getTransaction().commit();

            }