gpt4 book ai didi

java - hibernate/JPA : Get one (first) element of a OneToMany relationship

转载 作者:搜寻专家 更新时间:2023-11-01 03:51:23 24 4
gpt4 key购买 nike

我有一个 OneToMany 关系,假设 ListGroup 拥有许多 ListItem。我定义了 OneToMany 字段并且它有效,但我并不总是想获取所有 ListItem。我想要一个名为 latestItem 的附加字段。在 Hibernate 中,当您访问 oneToMany 集合中的一个元素时,它会获取所有这些元素,这就是我想要这个额外映射的原因。如果有很多项,则以下是低效的:

public ListItem getFirstItem() {
return listItems.get(0);
}

我试图建立一个公式。如果我想获取相关字段的单个列,公式似乎有效,如下所示:

@Formula("(select A.description from LIST_ITEM A where A.list_group_id=id and A.id=(select max(B.id) from LIST_ITEM B where B.list_group_id=id))")
public String getLatestListItemDescription() { ... }

但是,如果我尝试选择要放入 bean 中的整行,则会失败:

@Formula("(select A.* from LIST_ITEM A where A.list_group_id=id and A.id=(select max(B.id) from LIST_ITEM B where B.list_group_id=id))")
public ListItem getLatestListItem() { ... }

Caused by: org.hibernate.MappingException: Could not determine type for: ListItem, at table: LIST_GROUP, for columns: [org.hibernate.mapping.Formula( (select A.* from LIST_ITEM A where A.list_group_id=id and A.id=(select max(B.id) from LIST_ITEM B where B.list_group_id=id)) )]

即使我有 ListItem 的注释将其映射到 LIST_ITEM 表。

这对公式来说是不可能的,还是有不同的方法来解决这个问题?

最佳答案

可能应该使用 select A from LIST_ITEM A 而不是 select A.* from LIST_ITEM A

附注哈哈,我来晚了一点

关于java - hibernate/JPA : Get one (first) element of a OneToMany relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com