On Tue, Dec 8, 2009 at 9:11 AM, Charles Moulliard <[email protected]> wrote:
> Hi Claus,
>
> By removing the line template.persist(answer), I have been able to solve the
> issue and to run the project with openJPA.
>

Then it doesn't save the user into the database? Or how do you store
users in the database?
I thought there was some detach or the likes you could call after the
persist so the enttiy can be used outside JPA.


> Willem will now adapt the example and will provide different profiles to
> allow to run etl with Hibernate, OpenJPA and Derby. By the way, we have also
> test it on OSGI server.
>
> Regards,
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
> twitter : http://twitter.com/cmoulliard
> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>
> Apache Camel Group :
> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>
>
> On Mon, Dec 7, 2009 at 8:20 PM, Claus Ibsen <[email protected]> wrote:
>
>> On Mon, Dec 7, 2009 at 2:00 PM, Charles Moulliard <[email protected]>
>> wrote:
>> > I have understand why we have this error :
>> >
>> > In fact, within the CustomerTransformer class, the method
>> findCustomerByName
>> > (which is called) uses 'template.persist(answer);' who will inform Spring
>> to
>> > insert in the DB a customerEntity object if it not find from the SQL
>> query.
>> > Next, the same object is send to the JPA endpoint who will detect that
>> the
>> > object has not been detached.
>> >
>> > That means that attachment/detachment of objects does not occur in the
>> same
>> > way using Hibernate, JPA, ... as the code works for Hibernate
>> >
>> > Does anybody knows what was the intend to use this code in the transform
>> > class ?
>> >
>>
>> No I guess many of those "standards" are still problematic to use as
>> some impl. do X and others do Y.
>> I guess maybe some detach or whatever needs to be added when it
>> inserts the customer.
>>
>> Can you not try looking into this as you are messing with it already?
>>
>>
>> > **
>> > * Finds a customer for the given username, or creates and inserts a new
>> one
>> > */
>> > protected CustomerEntity findCustomerByName(JpaTemplate template, String
>> > user) {
>> > List<CustomerEntity> list = CastUtils.cast(template.find("select x from "
>> +
>> > CustomerEntity.class.getName() + " x where x.userName = ?1", user));
>> > if (list.isEmpty()) {
>> > CustomerEntity answer = new CustomerEntity();
>> > answer.setUserName(user);
>> > template.persist(answer);
>> > return answer;
>> > } else {
>> > return list.get(0);
>> > }
>> > }
>> >
>> > Regards,
>> >
>> > Charles Moulliard
>> > Senior Enterprise Architect
>> > Apache Camel Committer
>> >
>> > *****************************
>> > blog : http://cmoulliard.blogspot.com
>> > twitter : http://twitter.com/cmoulliard
>> > Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>> >
>> > Apache Camel Group :
>> > http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>> >
>> >
>> > On Mon, Dec 7, 2009 at 1:11 PM, Charles Moulliard <[email protected]
>> >wrote:
>> >
>> >> When I try to use the example camel-example-etl with openJPA, here is
>> the
>> >> error that I receive
>> >>
>> >> [ Camel thread 0: FileComponent] Tracer                         INFO
>> >> be7ae591-e2ea-4021-8179-d6bdd5f5398c >>> (route1)  -->
>> >> jpa://org.apache.camel.ex
>> >> ample.etl.CustomerEntity?consumeLockEntity=true <<< Pattern:InOnly,
>> >> Headers:{CamelFileNameOnly=row2.xml,
>> >> CamelFileAbsolutePath=D:\Dvlpt\Java\workspace
>> >> \apache-camel-source\examples\camel-example-etl\src\data\row2.xml,
>> >> CamelFileRelativePath=row2.xml, CamelFileName=row2.xml,
>> >> CamelFilePath=src\data\row2
>> >> .xml, CamelFileParent=src\data, CamelFileAbsolute=false,
>> >> CamelFileLength=982, CamelFileLastModified=Tue Jul 14 10:37:40 CEST
>> 2009},
>> >> BodyType:org.apach
>> >> e.camel.example.etl.PersonDocument, Body:<person
>> >>
>> user="hiram"><firstName>Hiram</firstName><lastName>Chirino</lastName><city>Tampa</city></person>
>> >> 16094  camel  TRACE  [Camel thread 0: FileComponent] openjpa.jdbc.SQL -
>> <t
>> >> 12662763, conn 1634627> executing prepstmnt 585058
>> >> SELECT t0.id, t0.city, t0.firstName, t0.phone, t0.street, t0.surname,
>> >>         t0.userName, t0.zip
>> >>     FROM Customer t0
>> >>     WHERE (t0.userName = ?)
>> >> [params=(String) hiram]
>> >> 16094  camel  TRACE  [Camel thread 0: FileComponent] openjpa.jdbc.SQL -
>> <t
>> >> 12662763, conn 1634627> [0 ms] spent
>> >> [ Camel thread 0: FileComponent] CustomerTransformer            DEBUG
>> >> Created customer: Customer[userName: hiram firstName: Hiram surname:
>> >> Chirino]
>> >> 16110  camel  TRACE  [Camel thread 0: FileComponent] openjpa.jdbc.SQL -
>> <t
>> >> 12662763, conn 21035203> executing prepstmnt 19041450
>> >> SELECT t0.city, t0.firstName, t0.phone, t0.street, t0.surname,
>> >>         t0.userName, t0.zip
>> >>     FROM Customer t0
>> >>     WHERE t0.id = ?
>> >> [params=(long) 0]
>> >> 16110  camel  TRACE  [Camel thread 0: FileComponent] openjpa.jdbc.SQL -
>> <t
>> >> 12662763, conn 21035203> [0 ms] spent
>> >> [ Camel thread 0: FileComponent] DefaultErrorHandler            DEBUG
>> >> Failed delivery for exchangeId: be7ae591-e2ea-4021-8179-d6bdd5f5398c. On
>> >> deliver
>> >> y attempt: 0 caught:
>> >> org.springframework.dao.DataIntegrityViolationException: Attempt to
>> persist
>> >> detached object "org.apache.camel.example.etl.Custome
>> >> rent...@8bfa09".  If this is a new instance, make sure any version
>> and/or
>> >> auto-generated primary key fields are null/default when persisting.;
>> nested
>> >> exception is <openjpa-1.3.0-SNAPSHOT-r422266:881892 nonfatal store
>> error>
>> >> org.apache.openjpa.persistence.EntityExistsException: Attempt to persist
>> det
>> >> ached object "org.apache.camel.example.etl.customerent...@8bfa09".  If
>> >> this is a new instance, make sure any version and/or auto-generated
>> primary
>> >> key
>> >>  fields are null/default when persisting.
>> >>
>> >> Anybody has an idea to avoid this ?
>> >>
>> >> Regards,
>> >>
>> >> Charles Moulliard
>> >> Senior Enterprise Architect
>> >> Apache Camel Committer
>> >>
>> >> *****************************
>> >> blog : http://cmoulliard.blogspot.com
>> >> twitter : http://twitter.com/cmoulliard
>> >> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>> >>
>> >> Apache Camel Group :
>> >> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>> >>
>> >
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Author of Camel in Action: http://www.manning.com/ibsen/
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to