Какие коллекции возвращает jpa?

JPA (Eclipselink в этом случае) всегда возвращает IndirectList, где у Entity есть список? Это нормально, этот список или он должен быть преобразован в другой список (возможно, связанный список)?

Ответы на вопрос(2)

посколькуList это интерфейс, JPA-провайдер может вернуть любую реализацию. EclipseLink возвращаетсяIndirectList гдеList используется. Это прекрасно, так какIndirectList этоList.

Для записи или для дальнейшего использования обычно рекомендуется использовать интерфейсы с JPA.

 25 мар. 2014 г., 08:34
@MartinAndersson Я больше не пользователь JPA, но я попробую. Я не думаю, что это будет в спецификации JPA, у вас будет больше шансов взглянуть на документацию реализаций (EclipseLink, Hibernate и т. Д.).org.eclipse.persistence.indirection.IndirectList является специфичным для EclipseLink.
 25 мар. 2014 г., 00:06
Я потратил некоторое время на поиск в спецификации JPA 2.1 слова или двух, которые комментируют это явно, но не повезло. Вы нашли проход?
 25 мар. 2014 г., 10:56
@MartinAndersson Python, но это не по теме, я думаю ;-)
 25 мар. 2014 г., 08:51
Что вы сейчас программируете?
Решение Вопроса
Analysis

Если мы посмотрим на EclipseLinkAPI IndirectList, это говорит:

To use an IndirectList: declare the appropriate instance variable with type IndirectList (jdk1.1) or Collection/List/Vector (jdk1.2).

TopLink will place an IndirectList in the instance variable when the containing domain object is read from the datatabase. With the first message sent to the IndirectList, the contents are fetched from the database and normal Collection/List/Vector behavior is resumed.

Если мы посмотримИсточники IndirectListмы увидим, что вся работа делегирована его оригинальной коллекции, как говорит API.

Answers

Does JPA ( Eclipselink in this case) always return IndirectList where Entity have a List?

Да, он всегда возвращает указанную коллекцию, завернутую в IndirectList. Поскольку он делегирует всю свою внутреннюю работу обернутой коллекции, он сохраняет способ, которым работает.

Is ok that list or It should be converted to another list( maybe linkedlist)?

Да, можно использовать IndirectList. Вы не конвертируете, вы просто определяете любой тип коллекции и не беспокоитесь о IndirectList, поскольку он управляется прозрачно.

 14 сент. 2017 г., 17:04
Как мы можем настроить, какая реализация коллекции требуется?
 11 июн. 2012 г., 10:09
Хороший ответ, чем мой, если честно. +1
 11 июн. 2012 г., 16:21
Отличный ответ. Одним из добавлений является то, что EclpseLink будет использовать косвенный список или другую реализацию IndirectContainer, когда коллекция загружается с отложенной загрузкой. По умолчанию для извлеченных отношений следует использовать тип реализации java Collection. EclipseLink может быть настроен для использования с любой реализацией коллекции, необходимой при создании ваших сущностей.

Ваш ответ на вопрос