Reputation: 2409
I am new to hibernate and trying to create a hibernate file for this table:
brand_id | brand_name | status
int,PK,AI varchar(100) | bool
My hibernate file is:
<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>
when set not-null property of brandName to true, I got exception following exception:
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)
When I set it to false or wrote nothing there, I am saving my data with null value. What am I doing wrong?
EDIT:
Backing 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}"/>
Upvotes: 1
Views: 3846
Reputation: 7218
It sounds like you're telling Hibernate that the brandName must not be null and then not setting it before saving. Can we see the code which generates the attached stack trace to confirm this?
Upvotes: 3