鉴于下面的类层次结构,我正在尝试查询对Charakter对象具有依赖性的CharacterDisposition。
@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;
}
我正在我的spring存储库界面中使用以下jpql查询,
@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=?
这是有问题的,因为在最终的“ where”语句之前添加了错误的“ on”关键字。我认为这可能与我的SceneCharacter被@Embedded有关。
我正在使用spring boot 2.2.1.RELEASE,hibernate和mysql 5的方言。
尝试以下操作-
@Query("SELECT cd "
+ "FROM CharacterDisposition cd "
+ "JOIN cd.slots cs "
+ "WHERE cs.character = :character")