@Entity
@Table(name = "some_class")
@SequenceGenerator(name = "default_gen", sequenceName = "some_class_id_seq", allocationSize = 1)
data class SomeClass(
@OneToMany(mappedBy = "someClass", cascade = [CascadeType.ALL], orphanRemoval = true)
@OrderBy("date")
var items: List<SomeItem>,
) : AbstractEntity()
@Entity
@Table(name = "some_item")
@SequenceGenerator(name = "default_gen", sequenceName = "some_item_id_seq", allocationSize = 1)
data class SomeItem(
val date: LocalDate,
@ManyToOne
@JsonIgnore
val someClass: SomeClass
) : AbstractEntity()
AbstractEntity
包含琐碎的事物,例如id,createdAt等。
我希望项目是一个有序列表,但事实并非如此,它始终按我创建项目的顺序包含项目。
编辑:该问题有点像“ JPA:无法使OrderBy工作”。这个问题的答案为我指明了正确的方向。 为了使测试通过,我需要在访问存储库之前调用以下函数:
private fun clearEntityManagerCache() {
entityManager.flush()
entityManager.clear()
entityManager.entityManagerFactory.cache.evictAll()
}
注入entityManager
后:
@Inject
private lateinit var entityManager: EntityManager
答案 0 :(得分:0)
您可以退出标准JPA @javax.persistence.OrderBy
,尝试使用@org.hibernate.annotations.Sort
或@org.hibernate.annotations.OrderBy
的Hibernate排序选项之一。
在域类中添加SQL片段不一定是世界上最优雅的事情,但这可能是最务实的事情。