[hibernate-dev] Extending hibernate

Sebastian smarichal at seciu.edu.uy
Thu Feb 7 14:51:01 EST 2013


Thanks you for the reply.
I'll try it and post it in the forum too.

Cheers!
Sebastian


On 06/02/13 12:24, Emmanuel Bernard wrote:
> It's better to use the user forums but here are a few hints.
>
> Depending on the collection type, Hibernate can delete the precise rows
> that it needs to. In other cases it has to clean all rows and recreate
> them.
>
> It seems you are using a collection that is neither a Set nor an indexed
> collection (List, Map) - or mapped as such. Consider @OrderColumn if you
> use a List as it's a more correct mapping.
>
> Emmanuel
>
> On Tue 2013-02-05 15:39, Sebastian wrote:
>> Hello,
>>
>> My name is Sebastián Marichal, im Computer Engineer and im from Uruguay.
>> Actually im working in a great bearing system, using JavaEE and
>> Hibernate as ORM.
>>
>> We implemented an audit mechanism using triggers in order to know each
>> insertion and deletion from the database. Everything is working very
>> well, but we noticed that in many-to-many associations , when adding an
>> element to a collection, hibernate deletes de full collection and
>> inserts each element again. For example:
>>
>> 1 - We have A with a collection of B elements:  A ---> [B1,B2,B3]
>>
>> 2 - Add another B elemento to the collection:   A.addB(B4)
>>
>> 3 - Hibernate delete all the rows from the mapping table A_B and then
>> inserts all the B elements again. Something like this:
>>
>>           A.removeAll(B1,B2,B3)
>>           A.insert(B1)
>>           A.insert(B2)
>>           A.insert(B3)
>>           A.insert(B4)
>>
>> We noticed this because the log of the audit mechanism was very dirty,
>> where we expected to see "B4 inserted into A_B table" we acctually see
>> "B1 deleted from A_B table"
>> "B2 deleted from A_B table"
>> "B3 deleted from A_B table"
>> "B1 inserted into A_B table"
>> "B2 inserted into A_B table"
>> "B3 inserted into A_B table"
>> "B4 inserted into A_B table"
>>
>>
>> We needed to avoid this kind of dirty log, so we decided to implement
>> native query for many to many collection manipulation, but this fix
>> isn't good enough because the version number (we are using optimistic
>> locking) of the entity isn't being updated automatically.
>>
>> Is there any way to change de add and remove implementation of hibernate
>> for many-to-many associations? Maybe extending hibernate? I know that
>> there si an extension api but im not sure if it can be used for this
>> purpose.
>>
>> I would like your opinion and suggestions!
>>
>>
>> Thanks you!!
>>
>> Sebastián Marichal
>> _______________________________________________
>> hibernate-dev mailing list
>> hibernate-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/hibernate-dev



More information about the hibernate-dev mailing list