>-----Original Message----- >From: Ate Douma [mailto:[email protected]] >Sent: Tuesday, June 26, 2012 11:04 AM >To: [email protected] >Subject: Re: Reintegrating Model Interfaces Branch > >On 06/26/2012 04:54 PM, Ate Douma wrote: >> On 06/26/2012 04:12 PM, Franklin, Matthew B. wrote: >>> >>> >>> On 6/25/12 3:53 PM, "Franklin, Matthew B." <[email protected]> wrote: >>> >>>> On 6/25/12 1:11 PM, "Franklin, Matthew B." <[email protected]> >wrote: >>>> >>>>> On 6/25/12 8:33 AM, "Jasha Joachimsthal" <[email protected]> wrote: >>>>> >>>>>> On 25 June 2012 14:00, Franklin, Matthew B. <[email protected]> >wrote: >>>>>> >>>>>>> On 6/24/12 6:06 AM, "Jasha Joachimsthal" <[email protected]> >wrote: >>>>>>> >>>>>>>> After some debugging I found out that the user creation goes wrong >>>>>>> when >>>>>>>> the >>>>>>>> Page objects are persisted. >>>>>>>> >>>>>>>> The following pages were created: >>>>>>>> Page [id=29] (Person profile) >>>>>>>> Page [id=30] (About) >>>>>>>> Page [id=31] (My activity) >>>>>>>> >>>>>>>> On save the following exception enters TranslatedH2Exception: >>>>>>>> org.h2.jdbc.JdbcSQLException: Referential integrity constraint >>>>>>> violation: >>>>>>>> "CONSTRAINT_255A8: PUBLIC.PAGE FOREIGN >KEY(PARENT_PAGE_ID) REFERENCES >>>>>>>> PUBLIC.PAGE(ENTITY_ID) (29)"; SQL statement: >>>>>>>> INSERT INTO page (entity_id, name, page_type, owner_id, >>>>>>> page_layout_id, >>>>>>>> parent_page_id) VALUES (?, ?, ?, ?, ?, ?) [23506-167] >>>>>>>> >>>>>>>> The database only contains USER pages after initialization. When I >>>>>>> want to >>>>>>>> go to the profile page of an existing user, it fails to generate the >>>>>>>> profile page with exactly the same error. >>>>>>>> I'm not able to create a new USER page either, but haven't found >out >>>>>>> yet >>>>>>>> where that one goes wrong (an NPE somewhere in persisting the >Page >>>>>>>> object). >>>>>>> >>>>>>> This appears to be an issue after merging in changes from trunk. Has >>>>>>> anyone checked to see if the issue exists there? >>>>>>> >>>>>> >>>>>> Everything works fine in trunk. >>>>> >>>>> Figured it out. The transaction manager applies the save methods to the >>>>> entity manager in order and when it was saving the sub pages, it didn't >>>>> have the ID for the parent. I have no idea why this is not failing in >>>>> trunk as well, but I added a save call before setting the sub pages and >>>>> it >>>>> works fine. >>>>> >>>>> Was this the only issue, or were there other problems you found? >>>> >>>> Seems that deleting pages is a non-starter. When the changes from trunk >>>> were merged in and the constraint generation enabled, OpenJpa can't >seem >>>> to cascade deletes for page users... >>> >>> Turns out that in trunk there are a couple of things that were making this >>> work: 1) the H2 database was not getting constraints generated for some >>> reason. 2) the repositories used to extend AbstractJpaRepository and no >>> longer do. That class was transactional. Since Spring will run the >>> methods in the same transaction that was created at the service layer, >>> this posed no problems. However, there is one key thing that the >>> transaction proxy does aside from committing the transaction; flush the >>> changes to the database. I have now added a few flushes in key places >and >>> everything is working as expected. >>> >>> Assuming lazy consensus, I will reintegrate the branch into trunk later >>> this afternoon. >>> >> Great work Matt! >> +1 for reintegrating back into trunk. >> >> Note: openjpa 2.2.0 adds one new (dist) dependency: >asm:asm:jar:3.2:compile >> which means we'll have to add its license [1] to our dist LICENSE file. > >I'll take care of it right now and update the LICENSE file in the branch.
Thanks Ate. Good catch. > >Ate > >> >> Regards, Ate >> >> [1] http://asm.ow2.org/asmdex-license.html
