Учитывая следующую иерархию классов, я пытаюсь запросить CharacterDisposition, которому принадлежит зависимость от моего объекта Charakter.
@Entity
@Table(name = "CHARACTER_DISPOSITION")
class CharacterDisposition{
@OneToMany
List<CharacterSlot> slots;
}
@Entity
@Table(name = "CHARACTER_SLOT")
class CharacterSlot{
@Embedded
SceneCharacter sceneCharacter;
}
@Embeddable
class SceneCharacter{
@ManyToOne
Charakter character;
}
Я использую следующий запрос jpql в моем интерфейсе репозитория spring,
@Query("SELECT cd "
+ "FROM CharacterDisposition cd "
+ "JOIN CharacterSlot cs "
+ "WHERE cs.sceneCharacter.character = :character")
List<CharacterDisposition> findCharacterDispositionWithCharacterDependency(Charakter character);
Вышеуказанный вызов создает следующий собственный sql оператор
select
characterd0_.id as id1_24_, characterd0_1_.scene_id as scene_id2_24_
from character_disposition characterd0_
inner join character_slot characterd0_1_ on characterd0_.id=characterd0_1_.id
inner join character_slot characters1_ on where characters1_.character_id=?
, который является ошибочным из-за ошибочного ключевого слова on, добавленного перед последним оператором where. Я думаю, что это может быть связано с тем, что мой SceneCharacter является @ Embedded.
Я использую весеннюю загрузку 2.2.1.RELEASE, hibernate и mysql 5 диалект.