【问题标题】:Hibernate not-null property references a null or transient value exceptionHibernate 非空属性引用空值或瞬态值异常
【发布时间】:2011-12-26 11:47:39
【问题描述】:

我是 hibernate 新手,正在尝试为此表创建一个休眠文件:

brand_id | brand_name | status
int,PK,AI  varchar(100) | bool

我的休眠文件是:

<hibernate-mapping>
  <class name="Brand" table="brand" catalog="aCatalog">
    <id name="brandId" type="java.lang.Integer">
        <column name="brand_id" />
        <generator class="identity" />
    </id>
    <property name="brandName" type="string">
        <column name="brand_name" length="100" not-null="true"/>
    </property>
    <property name="status" type="boolean">
            <column name="status"/>
    </property>
  </class>
</hibernate-mapping>

将brandName的非空属性设置为true时,出现以下异常:

org.hibernate.PropertyValueException: not-null property references a null or transient value: com.bla.pojos.Brand.status
    at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
    at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
    at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
    at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
    at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)

当我将它设置为 false 或在那里什么都不写时,我正在用空值保存我的数据。我做错了什么?

编辑:

支持 Bean:

@ManagedBean(name="brandSettingsBean")
@ViewScoped
public class BrandSettingsBean extends EBSBean implements Serializable {

    BrandSettingsService bsService = new BrandSettingsService();

    private Brand brand=new Brand();
    private String brandName;
    private Brand selectedBrand;
    private List<Brand> BrandList;

    public Brand getSelectedBrand() {
        return selectedBrand;
    }

public void setSelectedBrand(Brand selectedBrand) {
        this.selectedBrand = selectedBrand;
    }
public BrandSettingsBean() throws Exception {

        brandList=bsService.getBrands(null);
    }


 public void brandKaydet() {
        EBSResponse er = kiService.brandKaydet(brand, sessionUser, ipAdresi);

        if (er.getExceptionValue() == null) {
            this.brandList = (List<Brand>)er.getObjectValue();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, localeBean.lang.getString(er.getStringValue()), "");
            FacesContext.getCurrentInstance().addMessage("sysMsg", message);
        } else {
            FacesMessage message = new FacesMessage(EBSUtils.getHataTipi(er.getExceptionValue().getHataTipi()), localeBean.lang.getString(er.getExceptionValue().getHataMesaji()), "");
            FacesContext.getCurrentInstance().addMessage("sysMsg", message);
        }

        brand=new Brand();
    }

xhtml:

<p:inputText size="30" maxlength="50" required="true" requiredMessage="#{lang.brand_req_txt}" value="#{BrandSettingsBean.selectedBrand.brandName}"/> 

【问题讨论】:

    标签: hibernate hibernate-mapping


    【解决方案1】:

    听起来你是在告诉 Hibernate,brandName 不能为空,然后在保存之前不要设置它。我们可以查看生成附加堆栈跟踪的代码来确认这一点吗?

    【讨论】:

    • 嗯,我不确定那里发生了什么。 Hibernate 引用状态字段。您在 Brand 上有一个名为 status 的属性吗?
    • 亚历克斯,感谢您的回答。我发现我将brandName 发送到backing bean,而不是我应该发送brand。
    猜你喜欢
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    相关资源
    最近更新 更多