wicket-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mscoon <msc...@gmail.com>
Subject Re: problem with AbstractEntityModel from Igor Vaynberg
Date Mon, 05 May 2014 18:35:48 GMT
This is a hibernate issue, not a wicket issue. As I said before I am now
99% sure the problem is with the way you are using hibernate.

The bug you are getting is not caused by the line you highlighted. The
line  Kunde
kunde=kundeManager.get(new Long(pars.get("kundennr").toString())); executes
a select query to the database. Hibernate will try to flush all pending
inserts and updates before issuing a select.

So what is happening is that somewhere earlier you have updated an object
(say object A) with a reference to another object (say object B) which has
not been saved. For instance you did:

B b = new B();
a.addtB(b);

When hibernate tries to update a, it will throw this exception because b
has not been saved and has no id.

What you should do is:

B b = new B();
session.save(b);
a.addB(b);

This is just an example of how hibernate works with respect to the bug you
are getting.

Now, a wild guess (I may well be wrong) is that the following line:
nachweiseform.getModelObject().getKunde().addNachweis(nachwe
iseform.getModelObject());

may be causing the problem if hibernate tries to save kunde with
nachweiseform.getModelObject()
which is a new object with a null id.

You  may try to move this line to saveNachweise().


On Mon, May 5, 2014 at 2:54 PM, Yahoo <hansheinrichbraun@yahoo.de> wrote:

>
> Am 05.05.2014 11:05, schrieb mscoon:
>
>  In a previous message you sent the following snippets:
>>
>> //@XmlTransient
>> @ManyToOne(cascade = CascadeType.MERGE,fetch=FetchType.LAZY)
>> @JoinColumn(name="NachKundNr",insertable=false, updatable=false)
>>      public Kunde getKunde(){
>>         return this.kunde;
>>      }
>>
>> recursive Part for Kunde
>>
>>
>> @XmlTransient
>> @OneToMany(cascade={CascadeType.MERGE},fetch=FetchType.LAZY)
>> @JoinColumn(name="NachKundNr",insertable=false, updatable=false )
>>
>
> when I remove this I get the error :
> org.hibernate.TransientObjectException: object references an unsaved
> transient instance - save the transient instance before flushing:
> braunimmobilien.model.Nachweise
>      at org.hibernate.engine.internal.ForeignKeys.
> getEntityIdentifierIfNotUnsaved(ForeignKeys.java:249)
>      at org.hibernate.type.EntityType.getIdentifier(EntityType.java:459)
>      at org.hibernate.type.ManyToOneType.nullSafeSet(
> ManyToOneType.java:132)
>      at org.hibernate.persister.collection.AbstractCollectionPersister.
> writeElement(AbstractCollectionPersister.java:867)
>      at org.hibernate.persister.collection.AbstractCollectionPersister.
> insertRows(AbstractCollectionPersister.java:1475)
>      at org.hibernate.action.internal.CollectionUpdateAction.execute(
> CollectionUpdateAction.java:86)
>      at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)
>      at org.hibernate.engine.spi.ActionQueue.executeActions(
> ActionQueue.java:354)
>      at org.hibernate.engine.spi.ActionQueue.executeActions(
> ActionQueue.java:278)
>      at org.hibernate.event.internal.AbstractFlushingEventListener.
> performExecutions(AbstractFlushingEventListener.java:326)
>      at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(
> DefaultFlushEventListener.java:52)
>      at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1213)
>      at org.hibernate.internal.SessionImpl.managedFlush(
> SessionImpl.java:402)
>      at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.
> beforeTransactionCommit(JdbcTransaction.java:101)
>      at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.
> commit(AbstractTransactionImpl.java:175)
>      at org.springframework.orm.hibernate4.HibernateTransactionManager.
> doCommit(HibernateTransactionManager.java:554)
>      at org.springframework.transaction.support.
> AbstractPlatformTransactionManager.processCommit(
> AbstractPlatformTransactionManager.java:755)
>      at org.springframework.transaction.support.
> AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionMan
> ager.java:724)
>      at org.springframework.transaction.interceptor.
> TransactionAspectSupport.commitTransactionAfterReturnin
> g(TransactionAspectSupport.java:475)
>      at org.springframework.transaction.interceptor.
> TransactionAspectSupport.invokeWithinTransaction(
> TransactionAspectSupport.java:270)
>      at org.springframework.transaction.interceptor.
> TransactionInterceptor.invoke(TransactionInterceptor.java:94)
>      at org.springframework.aop.framework.ReflectiveMethodInvocation.
> proceed(ReflectiveMethodInvocation.java:172)
>      at org.springframework.aop.interceptor.ExposeInvocationInterceptor.
> invoke(ExposeInvocationInterceptor.java:91)
>      at org.springframework.aop.framework.ReflectiveMethodInvocation.
> proceed(ReflectiveMethodInvocation.java:172)
>      at org.springframework.aop.framework.JdkDynamicAopProxy.
> invoke(JdkDynamicAopProxy.java:204)
>      at com.sun.proxy.$Proxy112.get(Unknown Source)
>      at java.lang.reflect.Method.invoke(Method.java:606)
>      at org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(
> LazyInitProxyFactory.java:435)
>      at com.sun.proxy.$Proxy94.get(Unknown Source)
>      at braunimmobilien.webapp.nachweis.NachweisPanel.<init>(
> NachweisPanel.java:100)
>      at braunimmobilien.webapp.nachweis.NachweisPage.<init>(
> NachweisPage.java:47)
>      at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
>      at org.apache.wicket.session.DefaultPageFactory.newPage(
> DefaultPageFactory.java:171)
>      at org.apache.wicket.session.DefaultPageFactory.newPage(
> DefaultPageFactory.java:99)
>      at org.apache.wicket.DefaultMapperContext.newPageInstance(
> DefaultMapperContext.java:137)
>      at org.apache.wicket.core.request.handler.PageProvider.
> resolvePageInstance(PageProvider.java:268)
>      at org.apache.wicket.core.request.handler.PageProvider.
> getPageInstance(PageProvider.java:166)
>      at org.apache.wicket.request.handler.render.PageRenderer.
> getPage(PageRenderer.java:78)
>      at org.apache.wicket.request.handler.render.WebPageRenderer.respond(
> WebPageRenderer.java:271)
>      at org.apache.wicket.core.request.handler.RenderPageRequestHandler.
> respond(RenderPageRequestHandler.java:175)
>      at org.apache.wicket.request.cycle.RequestCycle$
> HandlerExecutor.respond(RequestCycle.java:862)
>      at org.apache.wicket.request.RequestHandlerStack.execute(
> RequestHandlerStack.java:64)
>      at org.apache.wicket.request.cycle.RequestCycle.execute(
> RequestCycle.java:261)
>      at org.apache.wicket.request.cycle.RequestCycle.
> processRequest(RequestCycle.java:218)
>      at org.apache.wicket.request.cycle.RequestCycle.
> processRequestAndDetach(RequestCycle.java:289)
>      at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(
> WicketFilter.java:259)
>      at org.apache.wicket.protocol.http.WicketFilter.
> processRequest(WicketFilter.java:201)
>      at org.apache.wicket.protocol.http.WicketFilter.doFilter(
> WicketFilter.java:282)
>      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1338)
>      at com.opensymphony.sitemesh.webapp.SiteMeshFilter.
> doFilter(SiteMeshFilter.java:65)
>      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1338)
>      at org.springframework.orm.hibernate4.support.
> OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:152)
>      at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
>      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1338)
>      at braunimmobilien.webapp.MessageFilter.doFilter(
> MessageFilter.java:32)
>      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1338)
>      at org.springframework.web.filter.CharacterEncodingFilter.
> doFilterInternal(CharacterEncodingFilter.java:88)
>      at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
>      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1338)
>      at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:484)
>      at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:119)
>      at org.eclipse.jetty.security.SecurityHandler.handle(
> SecurityHandler.java:524)
>      at org.eclipse.jetty.server.session.SessionHandler.
> doHandle(SessionHandler.java:233)
>      at org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1065)
>      at org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:413)
>      at org.eclipse.jetty.server.session.SessionHandler.
> doScope(SessionHandler.java:192)
>      at org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:999)
>      at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:117)
>      at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(
> ContextHandlerCollection.java:250)
>      at org.eclipse.jetty.server.handler.HandlerCollection.
> handle(HandlerCollection.java:149)
>      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:111)
>      at org.eclipse.jetty.server.Server.handle(Server.java:350)
>      at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(
> AbstractHttpConnection.java:454)
>      at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(
> AbstractHttpConnection.java:890)
>      at org.eclipse.jetty.server.AbstractHttpConnection$
> RequestHandler.headerComplete(AbstractHttpConnection.java:944)
>      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:630)
>      at org.eclipse.jetty.http.HttpParser.parseAvailable(
> HttpParser.java:230)
>      at org.eclipse.jetty.server.AsyncHttpConnection.handle(
> AsyncHttpConnection.java:77)
>      at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(
> SelectChannelEndPoint.java:606)
>      at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(
> SelectChannelEndPoint.java:46)
>      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:603)
>      at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(
> QueuedThreadPool.java:538)
>      at java.lang.Thread.run(Thread.java:744)
>
> at
>
>
>    final NachweiseForm nachweiseform=new NachweiseForm("form",model);
>     if (!(pars.getPosition("nachweisnr")>=0&&pars.get("nachweisnr").toLong()>0))
> {
>
>     if (pars.getPosition("kundennr")>=0&&pars.get("kundennr").toLong()>0)
> {
>  here ===>       Kunde kunde=kundeManager.get(new
> Long(pars.get("kundennr").toString()));
>
>         System.err.println("====================== set Kunde reached");
>         nachweiseform.getModelObject().setKunde(kunde);
>     // nachweiseform.getModelObject().getKunde().addNachweis(
> nachweiseform.getModelObject());
>     }
>
>     }
>
>
>
>     add(nachweiseform);
>
>
>
>  public List<Nachweise> getNachweise() {
>>      return nachweise;
>> }
>>
>> It seems like both sides of the relationship are set as insertable=false,
>> updatable = false. This would explain why kunde becomes null after saving,
>> though it contradicts your statement that everything is saved ok in the
>> db.
>>
>> Either way the AbstractEntityModel has nothing to do with how properties
>> of
>> the model object are stored in the db, so I still believe the problem is
>> somewhere else in your code.
>>
>> Marios
>>
>>
>> On Mon, May 5, 2014 at 11:26 AM, Yahoo <hansheinrichbraun@yahoo.de>
>> wrote:
>>
>>  First I have to tell you concerning the mapping I used the wrong word the
>>> dependencies in the mapping are not recursive bur circular.
>>>
>>> Am 04.05.2014 22:24, schrieb mscoon:
>>>
>>>   I'm not sure I see something wrong in your code, but then again you
>>> have
>>>
>>>> omitted a lot of stuff which could be cruicial.
>>>>
>>>> Does nachweiseform have any components that show/update kunde?
>>>>
>>>>  Label nachkundnr=new Label("kunde.id");
>>>   add(nachkundnr);
>>>
>>>   What exactly do you mean by saying "after save it disappears"? Has it
>>> been
>>>
>>>> stored correctly in the database or is it wrong there too?
>>>>
>>>>  Everything is stored correctly in the Database only NachKundNr is NULL
>>>
>>>   Have you tried to create a minimal case where you are setting kunde to
>>> an
>>>
>>>> object without having any wicket forms?
>>>>
>>>>  I have no problems with kunde in the TestCases
>>>
>>>   What is the value of kunde before saving to the db? If it is correctly
>>> set
>>>
>>>> then you likely have a problem with your mapping. If it's not correctly
>>>> set
>>>> then something is wrong with your form.
>>>>
>>>>  The problem is only with new Kunde() because Kunde must be preset and
>>> cannot be changed in the Form. Before using AbstractEntityModel I took
>>> all
>>> Ids of the MANYTOONE relationships in the model and loaded them from the
>>> Database and implanted them newly in Kunde before storing. My hope was to
>>> avoid this by using AbstractEntityModel.This works for all Dependencies
>>> which are set in the Form
>>>
>>>
>>>
>>>  On Sun, May 4, 2014 at 1:02 PM, Yahoo <hansheinrichbraun@yahoo.de>
>>>> wrote:
>>>>
>>>>   I have a suspicion: I have defened all dependencies with jpa or
>>>> hibernate
>>>>
>>>>> annotation.
>>>>> So I have also a lot of cicular dependencies, which sometimes make
>>>>> problem.
>>>>> I will give you 2 examples. one which is OK when I use
>>>>> AbstractEntityModel
>>>>> and on which makes problem, which is not set in the form through the
>>>>> Model
>>>>> but before.
>>>>>
>>>>> 1.
>>>>>
>>>>> the hibernatemodel:
>>>>>
>>>>> @IndexedEmbedded
>>>>> @ManyToOne(cascade=CascadeType.MERGE,fetch = FetchType.LAZY)
>>>>> @JoinColumn(name="NachAngNr",insertable=false, updatable=false)
>>>>>
>>>>> public Angebot getAngebot(){
>>>>>          return this.angebot;
>>>>>       }
>>>>>
>>>>> recursive part in Angebot:
>>>>>
>>>>> @XmlTransient
>>>>> @OneToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY)
>>>>> @JoinColumn(name="NachAngNr",nullable=false )
>>>>> public List<Nachweise> getNachweise() {
>>>>>       return nachweise;
>>>>> }
>>>>>
>>>>> Angebot is set by DropDownChoice in the form
>>>>>
>>>>>     private    IModel<List<? extends Angebot>> makeChoicesAngebote
=
>>>>> new
>>>>> AbstractReadOnlyModel<List<? extends Angebot>>()
>>>>>                {
>>>>>                    @Override
>>>>>                    public List<Angebot> getObject()
>>>>>                    { List<Angebot> angebotelist=new
>>>>> ArrayList<Angebot>();
>>>>>                        Iterator angeboteiterator=
>>>>> angebotManager.getAngebote().iterator();
>>>>>                    while(angeboteiterator.hasNext()){
>>>>>                        Angebot angebot=(Angebot)
>>>>> angeboteiterator.next();
>>>>> if(angebot.getAngstatus().getId().longValue()==1)
>>>>>                        angebotelist.add(angebot);
>>>>>                    }
>>>>>                        return angebotelist;
>>>>>                    }
>>>>>
>>>>>                };
>>>>>                   IChoiceRenderer<Angebot> angebotchoicerenderer=
>>>>>        new IChoiceRenderer<Angebot>() {
>>>>>
>>>>>                      public Object getDisplayValue(Angebot angebot)
>>>>>                        {
>>>>>                            return angebot.getId();
>>>>>                        }
>>>>>
>>>>>                        public String getIdValue(Angebot angebot,int
>>>>> index)
>>>>>                        {
>>>>>                            return angebot.getId();
>>>>>                        }
>>>>>            };
>>>>>
>>>>> final DropDownChoice<Angebot> angebote = new DropDownChoice<Angebot>("
>>>>> angebot",
>>>>>    makeChoicesAngebote,angebotchoicerenderer);
>>>>>
>>>>>
>>>>> The recursive part is treated in NachweiseManagerImpl :
>>>>>
>>>>> public Nachweise saveNachweise(Nachweise nachweise) throws
>>>>> NachweiseExistsException {
>>>>>
>>>>>         try {
>>>>>             if(nachweise.getId()==null){
>>>>>                 System.err.println("xxxxxxxxxxxxxxxxxx Id=null");
>>>>>
>>>>>                 if(nachweise.getMitarbeiter()!=null) {
>>>>>                   }
>>>>>                     =======================   recursive Part  for Kunde
>>>>> later =======================
>>>>>      /*         if(nachweise.getKunde()!=null) {
>>>>>                       System.err.println("xxxxxxxxxxxxxxxxxx Kunde");
>>>>> (nachweise.getKunde()).addNachweis(nachweise);
>>>>>                   }*/
>>>>>                   if(nachweise.getXtyp()!=null) {
>>>>>                   }
>>>>>
>>>>>                       if(nachweise.getAngebot()!=null) {
>>>>> nachweise.getAngebot().addNachweis(nachweise);
>>>>>                   System.err.println("xxxxxxxxxxxxxxxxxx Angebot");
>>>>>                       }
>>>>>     =======================   recursive Part  for Angebot
>>>>> =======================
>>>>>                       if(nachweise.getAngebot1()!=null) {
>>>>> nachweise.getAngebot1().addNachweis1(nachweise);
>>>>>                       }
>>>>>
>>>>>                       if(nachweise.getAngebot2()!=null) {
>>>>>                       nachweise.getAngebot2().addNachweis2(nachweise);
>>>>>                       }
>>>>>
>>>>>
>>>>>                       if(nachweise.getObjekt()!=null) {
>>>>> nachweise.getObjekt().addNachweise(nachweise);
>>>>>                       }
>>>>>
>>>>>                       if(nachweise.getPerson()!=null) {
>>>>> nachweise.getPerson().addNachweis(nachweise);
>>>>>                       }
>>>>>             }
>>>>>             return nachweiseDao.saveNachweise(nachweise);
>>>>>         } catch (DataIntegrityViolationException e) {
>>>>>             //e.printStackTrace();
>>>>>             log.warn(e.getMessage());
>>>>>             throw new NachweiseExistsException("Nachweise '" +
>>>>> nachweise.getId() + "' already exists!");
>>>>>         } catch (JpaSystemException e) { // needed for JPA
>>>>>             //e.printStackTrace();
>>>>>             log.warn(e.getMessage());
>>>>>             throw new NachweiseExistsException("Nachweise '" +
>>>>> nachweise.getId() + "' already exists!");
>>>>>         }
>>>>>     }
>>>>>
>>>>> Angebot is set by the DropDownChoice Nachweise is first inserted and
>>>>> can
>>>>> be changed.
>>>>>
>>>>> 2.
>>>>>
>>>>> the hibernateModel:
>>>>>
>>>>> //@XmlTransient
>>>>> @ManyToOne(cascade = CascadeType.MERGE,fetch=FetchType.LAZY)
>>>>> @JoinColumn(name="NachKundNr",insertable=false, updatable=false)
>>>>>       public Kunde getKunde(){
>>>>>          return this.kunde;
>>>>>       }
>>>>>
>>>>> recursive Part for Kunde
>>>>>
>>>>>
>>>>> @XmlTransient
>>>>> @OneToMany(cascade={CascadeType.MERGE},fetch=FetchType.LAZY)
>>>>> @JoinColumn(name="NachKundNr",insertable=false, updatable=false )
>>>>> public List<Nachweise> getNachweise() {
>>>>>       return nachweise;
>>>>> }
>>>>>
>>>>> Kunde ist set  is set after before adding the form :
>>>>>
>>>>>    final NachweiseForm nachweiseform=new NachweiseForm("form",model);
>>>>>
>>>>>       if (!(pars.getPosition("nachweisnr")>=0&&pars.get("
>>>>> nachweisnr").toLong()>0))
>>>>> {
>>>>>
>>>>>       if (pars.getPosition("kundennr")>=0&&pars.get("kundennr").
>>>>> toLong()>0)
>>>>> {
>>>>>           Kunde kunde=kundeManager.get(new Long(pars.get("kundennr").
>>>>> toString()));
>>>>>           System.err.println("====================== set Kunde
>>>>> reached");
>>>>>           nachweiseform.getModelObject().setKunde(kunde);
>>>>> =======================   recursive Part  for Kunde early set
>>>>> =======================
>>>>> nachweiseform.getModelObject().getKunde().addNachweis(
>>>>> nachweiseform.getModelObject());
>>>>>       }
>>>>>
>>>>>       }
>>>>>
>>>>>       after opening the form you see the Id of Kunde
>>>>> after save it disappears.
>>>>>
>>>>>       add(nachweiseform);
>>>>>
>>>>> When I set the recursive part later same result
>>>>>
>>>>> When I try to set the recursive part later I get the same result
>>>>>
>>>>> Am 04.05.2014 08:55, schrieb mscoon:
>>>>>
>>>>>    Usually this is not a problem. But maybe you are doing something
>>>>> different
>>>>>
>>>>>  that the "usual". I think you will need to show us your code to help
>>>>>> you
>>>>>> any further.
>>>>>>
>>>>>>
>>>>>> On Sun, May 4, 2014 at 9:12 AM, Yahoo <hansheinrichbraun@yahoo.de>
>>>>>> wrote:
>>>>>>
>>>>>>    It's the solution for all MANYTOONE-Fields defined in the Form
>>>>>>
>>>>>>  I have a MANYTOONE-Field which is preset and not set in the Form.
>>>>>>> This field is not stored.
>>>>>>>
>>>>>>> Am 02.05.2014 01:24, schrieb mscoon:
>>>>>>>
>>>>>>>     No you don't. The referenced objects will be serialized along
>>>>>>> with
>>>>>>> the
>>>>>>>
>>>>>>>   entity you are serializing and everything should work just
fine.
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, May 1, 2014 at 10:30 PM, Yahoo <hansheinrichbraun@yahoo.de>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>     Ok,thank  you, that's it.
>>>>>>>>
>>>>>>>>   My Entity has a lot of MANYTOONE relationships which are
set
>>>>>>>>
>>>>>>>>> byDropDownChoices.
>>>>>>>>> In the case of a new entity, do I have to load all these
Entities
>>>>>>>>> too
>>>>>>>>> and
>>>>>>>>> to save their ids ?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Am 01.05.2014 15:01, schrieb mscoon:
>>>>>>>>>
>>>>>>>>>      Heiner,
>>>>>>>>>
>>>>>>>>>    You didn't tell us which dependency injection framework
you  you
>>>>>>>>>
>>>>>>>>>  using.
>>>>>>>>>>
>>>>>>>>>> If you're using Spring then simply use the @SpringBean
annotation
>>>>>>>>>> to
>>>>>>>>>> get a
>>>>>>>>>> reference to an EntityManager or a Dao.
>>>>>>>>>>
>>>>>>>>>> @SpringBean automatically works only for components
so you'll also
>>>>>>>>>> need
>>>>>>>>>> to
>>>>>>>>>> add a call to injector to your model's constructor.
>>>>>>>>>>
>>>>>>>>>> public class MyModel implements IModel {
>>>>>>>>>>
>>>>>>>>>>        @SpringBean
>>>>>>>>>>        EntityManager entityManager;
>>>>>>>>>>
>>>>>>>>>>        public MyModel() {
>>>>>>>>>>          Injector.get().inject(this);
>>>>>>>>>>        }
>>>>>>>>>>
>>>>>>>>>> ...
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> This will take care of instantiating all @SpringBean
annotated
>>>>>>>>>> fields
>>>>>>>>>> as
>>>>>>>>>> well are handle their serialization/deserialization.
>>>>>>>>>>
>>>>>>>>>> Marios
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Thu, May 1, 2014 at 3:42 PM, Yahoo <hansheinrichbraun@yahoo.de
>>>>>>>>>> >
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>      I tried the AbstractEntityModel <http://
>>>>>>>>>> http://wicketinaction.
>>>>>>>>>>
>>>>>>>>>>    com/2008/09/building-a-smart-entitymodel/>
from Igor Vaynberg
>>>>>>>>>> but I
>>>>>>>>>>
>>>>>>>>>>  didn't get
>>>>>>>>>>> solved the @Dependency annotation from Vaynbergs
salve.
>>>>>>>>>>> Is there another solution for the Hibernate integration
for
>>>>>>>>>>> models.
>>>>>>>>>>>
>>>>>>>>>>> Best regards
>>>>>>>>>>> Heiner
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>     ------------------------------------------------------------
>>>>>>>>>>> ---------
>>>>>>>>>>>
>>>>>>>>>>>   To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>>>>>>>
>>>>>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>    ------------------------------------------------------------
>>>>>>>>> ---------
>>>>>>>>>
>>>>>>>>>  To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>>>>>
>>>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>   ------------------------------------------------------------
>>>>>>> ---------
>>>>>>>
>>>>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>>>
>>>>>
>>>>>
>>>>>  ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>>> For additional commands, e-mail: users-help@wicket.apache.org
>>>
>>>
>>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message