当前位置: 首页 > 知识库问答 >
问题:

OrderBy和OneToMany都不行

夏侯臻
2023-03-14

我有实体项目与投标有一对多的关系

型号/项目。JAVA

@Entity
class Item {
    @OneToMany(mappedBy = "item", fetch = FetchType.LAZY)
    @OrderBy(clause = "amount ASC")
    protected List<Bid> bids = new ArrayList<>();
}

模型/投标。JAVA

@Entity
public class Bid {
    @Id
    @GeneratedValue(
            generator = Constants.ID_GENERATOR
    )
    protected Long id;

    @ManyToOne
    @JoinColumn(name = "item_id")
    protected Item item;

    @Column(
            nullable = false
    )
    protected BigDecimal amount;
}

我想获取一个项目的附加出价,出价是按其金额排序的。但它似乎并不像预期的那样起作用

波斯特数据

Bid bid1 = new Bid(item2, BigDecimal.valueOf(1000));
            item2.getBids().add(bid1);
            Bid bid2 = new Bid(item2, BigDecimal.valueOf(2000));
            item2.getBids().add(bid2);
            Bid bid3 = new Bid(item2, BigDecimal.valueOf(1500));
            item2.getBids().add(bid3);

//
            Object[] entities = {
              bid1,
                    bid2,
                    bid3,
                    item2,
            };

            for (Object entity : entities) {
                em.persist(entity);
            }

            itemId = item2.getId();

选择


Item item = em.createQuery("select i from Item i JOIN FETCH i.bids b where i.id = :id", Item.class)
                    .setParameter("id", itemId)
                    .getSingleResult();

            for (Bid b : item.getBids()) {
                System.out.println(b);
            }

输出是

Bid{id=1000, amount=1000}

Bid{id=1001, amount=2000}

Bid{id=1002, amount=1500}

共有2个答案

严恩
2023-03-14

这个问题已经解决了。

我发现EntityManager的实例应该在插入数据后关闭,并且在取回数据时应该创建一个新实例。

EntityManager em = helper.createEntityManager();

// insert data

em.close();

em = helper.createEntityManager();

// fetch data

燕扬
2023-03-14

从中删除子句=

@OrderBy(clause = "amount ASC")

应该是这样的:

@OrderBy("amount ASC")

并确保您使用的是javax。坚持不懈订购人

 类似资料:
  • 所以我有这个疑问 这给了我想要的,但是orderby语句被忽略了。当我转储

  • 问题内容: 我有这个代码。 http://jsfiddle.net/0tgL7u6e/ JavaScript 视图 我不知道为什么订单不起作用,为什么过滤器不起作用。 在另一个问题上,我读到一些关于对象无法过滤或排序的信息。但是我上面有一个对象数组。此外,它应该工作! 有什么问题? 问题答案: 要对过滤器使用跟踪,必须在过滤器后面添加按表达式跟踪。 这是工作

  • 我有以下三个实体: 人 客户端具有个人id外键和区域id外键。一个人可以有很多客户,每个客户都属于一个地区。我正在尝试使用Laravel中的单个查询获取一个人的客户列表以及每个客户的区域。我曾经亲自与客户建立过很多关系,这很好。我正在尝试使用hasManyThrough方法来查询一个人,并获取他的客户和他们所在的地区,但我无法让它工作!我的关系设置为: 人有很多客户 客户属于区域 人已通过(客户,

  • 我想从例程中查询我的锻炼集合以获取最新的锻炼。这意味着我使用查询我的例程Key,按开始时间戳降序排列,然后限制为1,然后取锻炼的第一个Key/Id。 但是这不起作用。和单独工作但不组合。我做错了什么?

  • 我的查询没有使用参数对我的帖子进行排序。 一点背景: 我在foreach语句中,该语句循环遍历“category”id的自定义分类法。在该foreach语句中,我试图调用一个新的WP_查询,从该foreach循环的每个“类别”获取帖子。我的args数组如下所示: 和都是此post\u类型中我的自定义分类中的数组。 和根本不起作用,我想不出原因。

  • 问题内容: 我正在使用angular-filter中的 groupBy 按对象的date属性对对象数组进行分组。 产生以下内容: 如何从最近的日期开始颠倒顺序?当我打印到控制台时,以我想要的顺序打印阵列: 我还编写了一个自定义过滤器来反转groupBy之后的顺序: 我已经这样申请了: 问题答案: 最近有同样的问题。创建一个对象,但需要一个数组,因此涉及一些时髦。我最终从他们的问题页面直接得到了答案