Select 元素集合中的对象属性元素
Select element by object attribute in element collection
我对 JPA 查询不是很深入,目前的情况是:
@Entity(name = "ParentElement")
@Table(name = "parent_element")
data class ParentElementData(
@Id
@GeneratedValue
val id: Long?,
@ElementCollection
var values: List<ChildElementData> = emptyList(),
)
@Entity(name = "ChildElement")
@Table(name = "child_element")
data class ChildElementData(
@Id
@GeneratedValue
val id: Long?,
@Column(nullable = false)
val attribute: Long,
)
我想要实现的是获取 ChildElement.attribute 具有特定值的所有 ParentElements。
所以我从存储库开始
interface ParentElementRepository : CrudRepository<ParentElementData, Long> {
@Query("select p from ParentElement p where p.values ")
fun findByChildAttribute(attribute: Long): List<ParentElementData>
}
但我不知道如何完成查询。
看了一下:https://github.com/odrotbohm/repositories-deepdive/blob/master/src/main/java/de/olivergierke/deepdive/ProductRepository.java 但还没有用。
感谢
查询如下:
@Query("select p from ParentElement p JOIN p.values val where val.attribute = ?1 ")
fun findByChildAttribute(attribute: Long): List<ParentElementData>
如您所见,@ElementCollection
的工作方式与 @OneToMany
相同。
我对 JPA 查询不是很深入,目前的情况是:
@Entity(name = "ParentElement")
@Table(name = "parent_element")
data class ParentElementData(
@Id
@GeneratedValue
val id: Long?,
@ElementCollection
var values: List<ChildElementData> = emptyList(),
)
@Entity(name = "ChildElement")
@Table(name = "child_element")
data class ChildElementData(
@Id
@GeneratedValue
val id: Long?,
@Column(nullable = false)
val attribute: Long,
)
我想要实现的是获取 ChildElement.attribute 具有特定值的所有 ParentElements。
所以我从存储库开始
interface ParentElementRepository : CrudRepository<ParentElementData, Long> {
@Query("select p from ParentElement p where p.values ")
fun findByChildAttribute(attribute: Long): List<ParentElementData>
}
但我不知道如何完成查询。 看了一下:https://github.com/odrotbohm/repositories-deepdive/blob/master/src/main/java/de/olivergierke/deepdive/ProductRepository.java 但还没有用。
感谢
查询如下:
@Query("select p from ParentElement p JOIN p.values val where val.attribute = ?1 ")
fun findByChildAttribute(attribute: Long): List<ParentElementData>
如您所见,@ElementCollection
的工作方式与 @OneToMany
相同。