0

我正在使用 Hibernate 向数据库中插入一行,我正在使用 Visual Paradigm(企业版)生成数据库表。

这是错误

org.orm.PersistentException:org.hibernate.PropertyValueException:非空属性引用空值或瞬态值:org.orm.PersistentSession.saveOrUpdate(PersistentSession.java:631) 处的 com.patientmanagement.model.Patient.visitRecord。 orm.PersistentManager.saveObject(PersistentManager.java:287) at com.patientmanagement.model.PatientDAO.save(PatientDAO.java:303) at com.test.InsertData.main(InsertData.java:28) 原因:org.hibernate .PropertyValueException:非空属性引用空值或瞬态值:com.patientmanagement.model.Patient.visitRecord at org.hibernate.engine.Nullability.checkNullability(Nullability.java:100) at org.hibernate.event.def.AbstractSaveEventListener .performSaveOrReplicate(AbstractSaveEventListener.java:312) 在 org.hibernate.event.def.AbstractSaveEventListener。performSave(AbstractSaveEventListener.java:203) 在 org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) 在 org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) 在 org.hibernate .event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java :93) 在 org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:679) 在 org.hibernate.impl 的 org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:687)。org.orm.PersistentSession.saveOrUpdate(PersistentSession.java:629) 上的 SessionImpl.saveOrUpdate(SessionImpl.java:675) ... 还有 3 个

这是要测试的插入功能

public class InsertData {
    public static void main(String[]args) throws PersistentException
    {
        PersistentTransaction trans=PatientmanagementPersistentManager.instance().getSession().beginTransaction();
        try
        {
            //create patient instance
            Patient patient=PatientDAO.createPatient();

            //set patients properties
            patient.setName("Markus Rosevelt");
            patient.setRegisterDate(new Date());

            //save patient
            PatientDAO.save(patient);
            trans.commit();
        }catch(Exception e){
            trans.rollback();
        }
    }
}
4

2 回答 2

1

您可能已在数据库中将 visitRecord 列定义为 NOT NULL,现在您正尝试在该列上插入空值,或者您的映射不正确,您能显示您的映射和表定义吗?

于 2012-04-06T07:51:23.960 回答
0

此消息意味着您无法创建具有空属性的患者实体。在这种情况下,空属性是 Patient 实体中的 visitRecord 属性。您可以使用类似的东西为此属性分配一个值

patient.setVisitRecord(some values);

我希望这能解决你的问题。

于 2012-04-06T07:46:05.613 回答