我有一个名为Locatable的类:
@Entity
@Table(name = "locatable")
@PrimaryKeyJoinColumn(name = "device_id", referencedColumnName = "id")
open class Locatable: Device() {
@Basic
@Column(name = NAME_COLUMN)
var name: String? = null
}
如您所见,Locatable扩展设备,设备如下所示:
@Entity
@Table(name = "device")
@Inheritance(strategy = InheritanceType.JOINED)
abstract class Device {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGen")
@SequenceGenerator(name = "sequenceGen", sequenceName = "devices_id_seq", allocationSize = 1)
@Column(name = ID_COLUMN)
open var id: Long = 0
@Basic
@Column(name = GROUP_COLUMN)
open var groupId: Long = 0
}
现在,我试图使用像这样的hql进行回购:
interface LocatableRepo : JpaRepository<Locatable, Long> {
@Query("SELECT l FROM Locatable l LEFT JOIN FETCH l.Device WHERE l.groupId IN ?1")
fun getByGroupIdIn(ids: List<Long>): List<Locatable>
}
但由于某种原因,它不适合我...可能我做错了, 谢谢
答案 0 :(得分:0)
groupdId是实体设备,因此它应该是
LEFT JOIN FETCH l.Device d WHERE d.groupId
您为设备联接命名,并在引用属于设备的列
时使用该名称