JPA 2.0 провайдер Hibernate - PullRequest
       10

JPA 2.0 провайдер Hibernate

6 голосов
/ 30 декабря 2010

У меня очень странная проблема: мы используем jpa 2.0 с аннотациями гибернации. База данных, сгенерированная с помощью JPA, DDL верна, а MySQL как база данных;

Я предоставлю несколько справочных классов, а затем мою проблему.1004 *

как в коде, вы можете видеть, что родительские и дочерние классы расширяют общий класс, поэтому оба имеют свойство address и id, проблема возникает, когда изменение адреса адреса в родительском классе отражает одинаковое изменение во всех дочерних объектах в списке, и еслиизмените адресную ссылку в дочернем классе, тогда при слиянии он также изменит адресную ссылку родителя

Я не могу понять, является ли это проблемой jpa или hibernate

1 Ответ

1 голос
/ 17 января 2011

Если у вас есть общие экземпляры Address, изменения, внесенные, когда он находится в «области видимости» дочернего элемента, влияют на родительский элемент, поскольку вы имеете дело с одним и тем же экземпляром Address в родительском объекте.

Например:

Parent1.address => Address #1
Child1.address => Address #2
Child2.address => Address #2
Child3.address => Address #1

В этом случае, если вы измените Child3.address.street, это означает, что он также изменил Parent1.address.street. Обратите внимание, что то, что делает Address в Parent1 и Child3 одинаковым, это идентификатор. Если они содержат один и тот же идентификатор, это один и тот же экземпляр (т. Е. «Общий» для обоих объектов).

...