Код: Выделить всё
@Entity
public class DeviceEntity {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
@OneToOne(cascade = {PERSIST}, fetch = LAZY)
private DeviceEntity predecessor;
//Some other fields
}
id
predecessor_id
...
1
null
...
2< /td>
1
...
< /table>
Я пытаюсь получить некоторые устройства, используя следующий запрос:
Код: Выделить всё
em.createQuery("SELECT d FROM DeviceEntity d " +
" WHERE d.id IN :idList", DeviceEntity.class)
.setParameter("idList", deviceIdList)
.getResultList();
Ранее я использовал Hibernate 5.6.15.Final , и этот запрос извлекал оба объекта, когда [1, 2] был передан в качестве idList. Однако теперь он выбирает устройство со вторым идентификатором в качестве прокси-объекта. Я включил журналы Hibernate и заметил, что также происходит попадание в базу данных.
Изменение запроса на явную выборку предшественника решило проблему, но я ищу лучшее решение, которое не не требует получения ненужных данных. Как я могу эффективно решить эту проблему в обновленной версии 6.1.7.Final?
Подробнее здесь: https://stackoverflow.com/questions/785 ... pgrading-t
Мобильная версия