JPA:无法使 OrderBy 工作

2024-02-04

我正在尝试在保留并检索后打印有序列表。

我的实体:

@Entity
public class News {
    @Id @GeneratedValue
    private Long id;
    private String content;
    @OneToMany(cascade = CascadeType.ALL)
    @OrderBy("likes DESC")
    private List<Comment> comments = new LinkedList<>();

    //------------------
}

@Entity
public class Comment {
    @Id
    @GeneratedValue
    private Long id;
    private String content;
    private int likes;
}

主要方法片段:

tx.begin();
{
    // persist
    News n1 = new News("Super news!!");
    Comment c1 = new Comment("comment 1", 1);
    Comment c2 = new Comment("comment 2", 200);
    Comment c3 = new Comment("comment 3", 10);

    n1.addComment(c1);
    n1.addComment(c2);
    n1.addComment(c3);

    em.persist(n1);

    // find
    News news = em.find(News.class, n1.getId());
    for (int i = 0; i < news.getComments().size(); i++) {
        System.err.println(news.getComments().get(i).getLikes());
    }
}
tx.commit();

结果按声明顺序打印(1 -> 200 -> 10),我期望(200 -> 10 -> 1)。 有人可以帮忙吗?


我猜您是从实体管理器而不是数据库获取实体,因此您将获得与您创建的相同的对象(不是排序的对象)。您应该尝试在之前刷新缓存em.find() method:

em.getTransaction().begin();
em.persist(n1);
em.getTransaction().commit();

// Clear object
em.getEntityManagerFactory().getCache().evict(News.class, n1.getId());

// find
News news = em.find(News.class, n1.getId());
for (int i=0; i<news.getComments().size(); i++){
    System.err.println(news.getComments().get(i).getLikes());
}

From Javadoc https://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html, 方法:

<T> T find(java.lang.Class<T> entityClass, java.lang.Object primaryKey)

通过主键查找。搜索指定类的实体并 首要的关键。如果实体实例包含在持久化中 上下文,它从那里返回.

我理解可能给你带来麻烦的部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA:无法使 OrderBy 工作 的相关文章

  • 了解 netty 通道缓冲区和水印

    我正在尝试了解网络缓冲区和水印 作为一个测试用例 我有一个 netty 服务器 它向客户端写入数据 客户端被阻止 基本上每次读取之间有 10 秒的睡眠时间 在正常 I O 下 如果接收方被阻塞 TCP 发送方将受到限制 由于流量控制 发送速
  • Hashset - 创建 Set 后使对象相同

    如果我们在 HashSet 中添加两个不同的对象 可变的 然后通过调用 setter 更改对象的值 使它们相同 则大小仍然是 hashSet 的 2 我无法理解其原因 public static void main String args
  • java 中的梵文 i18n

    我正在尝试使用来自互联网的示例 ttf 文件在 java 中使用 i18n 进行梵文 印地文 我可以加载资源包条目 还可以加载 ttf 并设置字体 但它不会根据需要呈现 jlabel 它显示块代替字符 如果我在 Eclipse 中调试 我可
  • 垂直 ViewPager 中的动画

    我需要垂直制作这个动画ViewPager https www youtube com watch v wuE 4jjnp3g https www youtube com watch v wuE 4jjnp3g 这是我到目前为止所尝试的 vi
  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • Selenium 和 TestNG 同时使用“dependsOn”和“priority =”问题

    我正在努力在 GUI 自动化测试中实现更好的工作流程控制 我首先从dependsOn开始 但很快发现缺点是如果一个测试失败 则套件的整个其余部分都不会运行 所以我改用 priority 但看到了意外的行为 一个例子 Test priorit
  • 使用全局变量从内部函数获取空字符串

    请帮助我解决一些小问题 我确信你能做到 D 我试图在 firestore 文档 user cases information 上设置一个字段 其中包含一个字段 case number 首先我声明这个全局变量 private String c
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 使用 kryo 注册课程的策略

    我最近发现了 kryonet 库 它非常棒并且非常适合我的需求 然而 我遇到的一个问题是制定一种好的策略来注册所有可以转移的类 我知道我可以在每个对象中编写一个静态方法 该方法将返回它使用的所有类的列表 但我真的不想这样做 为了我自己的时间
  • JPA - OneToOne 外键作为主键

    我有一个表 需要其主键作为其他表的外键 因此是单向的一对一关系 每本书只有一个作者 如下所示 Entity public class Author Id String code getters and setters Entity publ
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • 在Java中如何将字节数组转换为十六进制?

    我有一个字节数组 我希望该数组的每个字节字符串转换为其相应的十六进制值 Java中有没有将字节数组转换为十六进制的函数 byte bytes 1 0 1 2 3 StringBuilder sb new StringBuilder for
  • Time.valueOf 方法返回错误值

    我使用 Time valueOf 方法将字符串 09 00 00 转换为 Time 对象 如下所示 Time valueOf LocalTime parse 09 00 00 当我调用 getTime 来显示我得到的值时 28800000
  • 如何使用 Java 在 selenium webdriver 中打开新选项卡或如何使用使用 selenium webdriver 的操作类在 selenium 中按 ctrl +T [重复]

    这个问题在这里已经有答案了 如何使用 Java 在 Selenium Webdriver 中按 CTRL T 或者 如何使用 Java 在 selenium webdriver 中打开新选项卡 简单步骤 1 打开google com 不必触
  • 接口是否像对象一样对待?

    为什么下面的代码可以工作 interface I class A implements I public String toString return in a class B extends A public String toStrin
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • 如何使用eclipse调试JSP tomcat服务?

    我想使用 Eclipse IDE 调试器来调试单独运行的 JSP Struts Tomcat Hibernate 应用程序堆栈 如何设置 java JVM 和 eclipse 以便设置断点 监视变量值并查看当前正在执行的代码 我刚刚用谷歌搜
  • Unicode(希腊语)字符存储在数据库中,例如“??????”

    数据库中的希腊字符就像问号 我找不到解决办法 我使用 Java Swing 开发了一个应用程序 但是当我在 MySQL 中插入希腊字母时 就像问号一样 我将数据库排序规则更改为 utf8 并将列也更改为 utf8 我的项目编码设置为UTF

随机推荐

  • phpmyadmin 令牌不匹配导致长时间闲置

    我安装了phpMyAdmin 4 0 4 1在我本地的开发环境中 我设置了auth type to config 我还通过此设置提供身份验证要求 cfg Servers i auth type config cfg Servers i ho
  • Google Chrome 强制下载“f.txt”文件

    更新到 Chrome 40 0 2214 111 后 当我访问某些 Google 相关网站 例如http youtube com http youtube com并在视频之前看到广告 浏览器下载一个名为f txt 我没有安装任何 adblo
  • 未找到符号:_libintl_gettext

    我正在尝试使用 C 创建一个 NodeJS 模块node gyp 该软件包依赖于 GNU 的 Gettext 库 我目前使用的是 Mac OS X Mountain Lion 我尝试过通过手动 Homebrew 甚至 Fink 自己安装该软
  • Apple 的 iMessage 模板或向现有应用程序添加扩展之间有什么区别?

    我注意到 iOS 10 消息应用程序的创建有所不同 如果您使用创建一个新项目iMessage Application选择新项目的模板 Xcode 将创建两个目标 一个应用程序和一个扩展 但该项目无法运行 从第二张图片可以看出 底部的目标选择
  • 虚拟继承是否强制基类默认可构造?

    在下面的代码中 编译器正在请求基址class X to be 默认可构造 但是 如果我删除virtual来自继承的关键字类节点 会员的访问权限m x当然 变得含糊不清 但是默认构造函数 for class X不再需要 这是什么原因呢 inc
  • Facebook Open Graph:将网站与 Facebook 页面关联

    我想在我的 Facebook 页面和我的网站之间建立关系 我已经设置了它们 并将 OG 标签添加到网站中 然而 Facebook 页面和我的网站之间似乎没有任何联系 这fb admin标签设置为我的 Facebook 用户 ID 但我想与我
  • ANTLR 歧义问题

    我有这个语法 grammar MyGrammar prog lexeme lexeme TOK INTLIT 0 9 Identifiers Letter Letter Digit fragment Letter a zA Z fragme
  • ASP.NET 会员注册问题

    我在会员资格方面遇到了困难 好吧 这真的很奇怪 我可以注册一个用户 我可以注册 我可以登录 但是 当我去注册另一个用户时 该用户没有保存在数据库中 我得到了一个 当用户尝试登录时 会员凭证验证失败事件 我假设是因为用户从未被保存 这是我用来
  • 将 Java 回调函数传递给 JSNI 方法?

    我想将成功和失败回调 Java 函数传递给 JSNI 方法 这是我到目前为止所得到的 但它不起作用 我该如何修复它 package c public class A test new Callback
  • 如何清除 ttk.Treeview 小部件中的项目?

    ing scroll Scrollbar window1 frame1 orient VERTICAL ingredients ttk Treeview window1 frame1 yscrollcommand ing scroll se
  • 当我打开模式时添加下一个和上一个按钮

    我是新手 我想问您是否可以帮我将下一个和上一个按钮添加到我的模式中 这些图片不是画廊形式的 我是添加 div 还是像这样添加一些 javascript 你能推荐一些吗 var modal document getElementById my
  • 带标题的多个图像文件上传

    我设法得到了字幕foreach循环但现在我面临一个新问题 由于嵌套循环 我的数据库中出现重复项 请检查下面的代码 JavaScript window onload function if window File window FileLis
  • Python Tkinter,使用循环设置按钮回调函数

    我正在编写一个显示按钮网格的程序 当按下按钮时 我希望它将网格中按钮的位置 行列 打印到控制台 这是我所拥有的 import Tkinter as tk class board tk Tk def init self parent None
  • DateFormatter 返回错误的时间[重复]

    这个问题在这里已经有答案了 我对 Date 进行了扩展 返回格式化字符串 extension Date var myFormattedDate String let formatter DateFormatter formatter tim
  • 变量===未定义与typeof变量===“未定义”

    The jQuery 核心风格指南 https contribute jquery org style guide js type checks建议两种不同的方法来检查变量是否已定义 全局变量 typeof variable undefin
  • jQuery UI 可排序动画

    我有一个类似网格的列表 并且按照计划在其中运行可排序功能 我想为每个项目设置动画 除了被操纵以在列表中平滑滑动的项目之外 我在这里设置了一个示例 http jsfiddle net wpmte http jsfiddle net wpmte
  • Vue.js 强制重新渲染包含 v-once 指令的组件

    Vue 2 0 我有一个包含 div 的组件 使用v once防止重新渲染的指令 当 URL 参数更改时 即单击 vue router 链接 更改组件中使用的 url 和参数 该组件会更新它显示的数据 该组件成功地使用新数据重新渲染所有内容
  • Azure MobileApp 自定义身份验证、刷新令牌

    我需要我的应用程序支持针对我们的私人数据库的自定义身份验证 并遵循此处 Adrian Hall 书中的建议https adrianhall github io develop mobile apps with csharp and azur
  • 在Java中,如果子类用实例子变量隐藏静态父变量,继承的方法将使用哪个变量?

    正如中所讨论的 这可能是一件坏事Java中的父类和子类可以有相同的实例变量吗 https stackoverflow com questions 3501060 can parent and child class in java have
  • JPA:无法使 OrderBy 工作

    我正在尝试在保留并检索后打印有序列表 我的实体 Entity public class News Id GeneratedValue private Long id private String content OneToMany casc