简体   繁体   English

通过 hibernate 映射将数据插入数据库表失败

[英]inserting data into database table via hibernate mapping fails

I am using Hibernate to insert a row into a database, I am using Visual Paradigm (Enterprise Edition) to generate database tables.我正在使用 Hibernate 向数据库中插入一行,我正在使用 Visual Paradigm(企业版)生成数据库表。

Here are the errors这是错误

org.orm.PersistentException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.patientmanagement.model.Patient.visitRecord at org.orm.PersistentSession.saveOrUpdate(PersistentSession.java:631) at org.orm.PersistentManager.saveObject(PersistentManager.java:287) at com.patientmanagement.model.PatientDAO.save(PatientDAO.java:303) at com.test.InsertData.main(InsertData.java:28) Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.patientmanagement.model.Patient.visitRecord at org.hibernate.engine.Nullability.checkNullability(Nullability.java:100) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:312) at org.hibernate.event.def.A org.orm.PersistentException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.patientmanagement.model.Patient.visitRecord at org.orm.PersistentSession.saveOrUpdate(PersistentSession.java:631) at org. orm.PersistentManager.saveObject(PersistentManager.java:287) at com.patientmanagement.model.PatientDAO.save(PatientDAO.java:303) at com.test.InsertData.main(InsertData.java:28) Caused by: org.hibernate .PropertyValueException: not-null property references a null or transient value: 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.A bstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at 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) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:687) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:679) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.88 bstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at 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) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:687) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:679) at org.hibernate.impl.SessionImpl.saveOrUpdate( SessionImpl.88 213246945888:675) at org.orm.PersistentSession.saveOrUpdate(PersistentSession.java:629)... 3 more 213246945888:675) 在 org.orm.PersistentSession.saveOrUpdate(PersistentSession.java:629)... 3 更多

And here is the Insert function to test这是要测试的插入 function

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();
        }
    }
}

you might have defined the column visitRecord as NOT NULL on your database and now you are trying to insert a null value on that column, or your mapping is not correct, can you show your mapping and your table definition?您可能在数据库中将列 visitRecord 定义为 NOT NULL,现在您正试图在该列上插入一个 null 值,或者您的映射不正确,您可以显示您的映射和表定义吗?

This message means that you cannot create a Patient entity with an empty property.此消息意味着您不能创建具有空属性的 Patient 实体。 The empty property in this case is the visitRecord property within the Patient entity.本例中的空属性是 Patient 实体中的 visitRecord 属性。 You can assign a value to this property using something like您可以使用类似的方式为此属性分配一个值

patient.setVisitRecord(some values);

I hope this solves your problem.我希望这能解决你的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM