2012-06-26 7 views
3

Эта проблема возникает случайным образом. Программа проработала более месяца, и сегодня она разбилась. При добавлении нового заказа пользователь может выбрать компанию из выпадающего списка. Затем он может сохранить новый заказ в базе данных. Он работает большую часть времени даже сейчас, когда перезагружается приложение. Код ошибки следующим образом:Значение свойства hibernate not-null имеет значение null или переходное:

javax.persistence.PersistenceException: org.hibernate.PropertyValueException: не-нулевое свойство ссылается на нулевое или переходное значении: mapped.Order.company (odwzorowania.Zlecenie.firma)

Использование Hibernate, JSF 2.1, MySql 5.5, javax.persistence. *

здесь код (имена переводятся с польского)

public void update(Order order) throws AdException 
{ 
    try 
    { 
     begin(); 

      Company fir2 = order.getCompany(); 

      em.merge(fir2); 
      em.merge(order); 

     commit(); 
    } 
    catch(HibernateException e) 
    { 
     rollback(); 
     throw new AdException("Nie mozna zaktualizować zlecenia",e); 
    } 
} 

Заказать объект

import javax.persistence.* //fixed in real code 

    @Entity 
    @Table(name = "order") 


    public class Order implements Serializable { 
    private static final long serialVersionUID = 1L; 

    private Integer idOrder; 
    private Company company; 
    [...] 

    @JoinColumn(name = "company_idCompany", referencedColumnName = "idCompany") 
    @ManyToOne(optional = false, fetch = FetchType.LAZY) 
    public Company getCompany() { 
     return company; 
    } 

    public void setCompany(Company company) { 
     this.company = company; 
    } 
    [...] 

предприятие компании

import javax.persistence.* 

@Entity 
@Table(name = "company") 

public class Company implements Serializable { 

private static final long serialVersionUID = 1L; 

private Integer idCompany;  
private List<Order> orderList; 
[...] 

@OneToMany(mappedBy = "company", fetch = FetchType.LAZY) 
public List<Order> getOrderList() { 
    return orderList; 
} 

public void setOrderList(List<Order>orderList) { 
    this.orderList = orderList; 
} 
[...] 

трассировки стека (mapped.Order.company такая же, как odwzorowania.Zlecenie.firma переводится с польского)

2012-xx-xx xx:xx:xx com.sun.faces.application.ApplicationImpl newThing 
SEVERE: Unable to load class: 
javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: odwzorowania.Zlecenie.firma 
    at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637) 
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:74) 
    at controllery.FirmaController.get(FirmaController.java:84) 
    at validatory.FirmyValidator.<init>(FirmyValidator.java:32) 
    at sun.reflect.GeneratedConstructorAccessor154.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:532) 
    at java.lang.Class.newInstance0(Class.java:372) 
    at java.lang.Class.newInstance(Class.java:325) 
    at com.sun.faces.application.ApplicationImpl.newThing(ApplicationImpl.java:1699) 
    at com.sun.faces.application.ApplicationImpl.createValidator(ApplicationImpl.java:1557) 
    at com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.createValidator(ValidatorTagHandlerDelegateImpl.java:238) 
    at com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.applyAttachedObject(ValidatorTagHandlerDelegateImpl.java:132) 
    at com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.applyNested(ValidatorTagHandlerDelegateImpl.java:205) 
    at com.sun.faces.facelets.tag.jsf.ValidatorTagHandlerDelegateImpl.apply(ValidatorTagHandlerDelegateImpl.java:87) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
    at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
    at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86) 
    at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:769) 
    at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:232) 
    at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:188) 
    at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:452) 
    at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148) 
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:192) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:636) 
Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: odwzorowania.Zlecenie.firma 
    at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72) 
    at org.hibernate.event.def.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:270) 
    at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:128) 
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196) 
    at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76) 
    at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35) 
    at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969) 
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1114) 
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) 
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65) 
    ... 58 more 

Я нашел некоторые ответы, но ни один из они, похоже, соответствуют моей проблеме. Как вы можете видеть, я обновляю обе стороны двунаправленной связи между компанией и заказом.

редактировать: фиксированный перевод

ответ

0

Я думаю, что отношения между лицом Компанией и лицом заказом является причиной вашей проблемы. У ордера лица нет Компании.

Вопрос, заказ.getCompany() может быть пустым во время испытаний? Ваше сопоставление объекта Заказ:

@ManyToOne(**optional = false**, fetch = FetchType.LAZY) 

Я вижу, что поле Компания требуется в суде заказа.

С уважением

+0

фирма фирмаa in полировка. Возможно, я ошибся при переводе. Все, что я хотел сделать, это перевести имена с польский на английский. Возможно, я забыл о некоторых – Szajba

+0

исправил перевод – Szajba

+0

Не волнуйся ... Я испанский. Я отредактирую свой ответ – esmoreno

Смежные вопросы

 Смежные вопросы