Как сохранить коллекцию интерфейса Collection <Interface>в JPA? - PullRequest
1 голос
/ 04 октября 2010

У меня есть следующий сценарий:

// several classes that implement different interfaces 
class A implements X,Y {}
class B implements Y,Z {}
class C implements X,Z {}

// other classes that contain collections of one of the interfaces(different objects)
class G {
  Collection<X> mayContainAC;
}
class H {
  Collection<Y> mayContainAB;
}
class I {
  Collection<Z> mayContainBC;
}

Как бы я сохранил это, используя JPA?

Из того, что я вижу, JPA не поддерживает Коллекции интерфейсов. Это правильно? JDO его поддерживает, но у меня возникают трудности с размещением JDO в приложении Wicket

Спасибо, Том

Ответы [ 2 ]

2 голосов
/ 04 октября 2010

Как мне сохранить это с помощью JPA?

Не поддерживается.

Из того, что я вижу, JPA не поддерживает коллекции интерфейсов,Это правильно?

Если в интерфейсе есть один постоянный реализатор, вы можете определить его, используя targetEntity.

Если интерфейс имеет несколько реализаторов, он не поддерживается стандартным JPA.

0 голосов
/ 21 сентября 2012

JDO поддерживает это

Да, JDO поддерживает постоянные интерфейсы, и мы используем их с 2007 года во всех наших проектах, потому что, вы знаете, использование интерфейсов в Java-программированиикак объектно-ориентированное моделирование 1.0.1.Если ваш ORM не поддерживает их, то ваше так называемое «прозрачное постоянное» решение на самом деле не очень прозрачное.

Этот и некоторые другие недостатки означают, что мы избежали самой популярной реализации JPA и в итоге оказалисьиспользование ORM, что-то немного менее популярное, но гораздо более мощное и высокопроизводительное, когда дело доходит до объектно-ориентированного моделирования.Мы используем DataNucleus / JDO, где постоянные интерфейсы работают отлично.Я не могу представить, как строить ОО модели без этой поддержки.

Я не уверен, каково внутреннее архитектурное ограничение самой популярной реализации JPA, которая не может поддерживать постоянные интерфейсы.

Помимо реализации стандарта JDO DataNucleus также реализует JPAстандарт.Существует вероятность того, что DataNucleus / JPA поддерживает постоянные интерфейсы, но я когда-либо использовал DataNucleus только с JDO, поэтому точно не знаю.

, но у меня возникают трудности с размещением JDO в моем приложении Wicket.

У нас есть массивная (более 400 постоянных классов) веб-приложение / облачная платформа, развернутая с использованиемJDO с (самым превосходным) фреймворком Java-интерфейса Wicket и у него никогда не было проблем.Мы создали несколько JDO-специфических реализаций IModel, которые работают с архитектурой связывания моделей Wicket.Дайте нам знать, если вы хотите использовать их, и мы можем открыть их с открытым исходным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...