2011-12-26 2 views
1

を参照休止:は、私が休止状態に新しいですし、このテーブルのために休止状態ファイルを作成しようと、nullでないプロパティがnullまたは過渡値例外

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のnot-nullプロパティを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) 

虚偽またはそこに何も書いていない、私はnull値で私のデータを保存しています。私は間違って何をしていますか?

EDIT:

バッキング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}"/> 

答えて

3

あなたは新しい名称がnullでないと、その後の前にそれを設定してはならないことをHibernateに言っているようですね節約する。添付のスタックトレースを生成してこれを確認するコードを確認できますか?

+0

xhtmlとバッキングのBeanコードを追加しました。 – lamostreta

+0

うーん、何が起こっているのか分かりません。 Hibernateはステータスフィールドを参照します。あなたはブランドに関するステータスを持っていますか? –

+0

アレックス、あなたの答えに感謝します。ブランドネームをバッキングビーンに送るのではなく、ブランドを送ったはずです。 – lamostreta

関連する問題