У меня есть следующий шаблон
@Entity
Class Fruit {
String name;
}
@Entity
Class FruitAddition {
@ManyToOne
Basket basket;
@ManyToOne
Fruit fruit;
String additionType;
}
@Entity
Class Basket {
String owner;
@ManyToMany
List<Fruit> fruits;
@ManyToMany(mappedBy="basket")
List<FruitAddition> fruitAdditions;
}
Таким образом, Basket
состоит из списка Fruit
с (один фрукт может быть в нескольких корзинах одновременно) и из спискаFruitAddition
с, что является почти списком Fruit
с, но каждый фрукт в корзине имеет дополнительные данные additionType
, связанные с ним.
Кажется, это работает.
Теперь я хочу запросить все фрукты в корзине и, таким образом, я пытаюсь объединить два псевдонима в один результат следующим образом:
SELECT fruitAlone, fruitAdded
FROM Basket bask
JOIN bask.fruits fruitAlone
JOIN bask.fruitAdditions addition
JOIN addition.fruit fruitAdded
WHERE bask.owner = 'JOE'
И затем интерпретироватьрезультат как List<Fruit>
, так как оба fruitAlone
и fruitAdded
имеют тип Fruit
.
Но я получаю java.lang.ClassCastException
.
Как это правильно сделать?