@Where 子句在 hibernate join 查询中不起作用

2024-05-03

我有 2 个带有 @Where 注释的实体。第一个是类别;

@Where(clause = "DELETED = '0'")
public class Category extends AbstractEntity

且有如下关系;

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "category")
private Set<SubCategory> subCategories = Sets.newHashSet();

第二个实体是 SubCategory;

@Where(clause = "DELETED = '0'")
public class SubCategory  extends AbstractEntity

并包含对应关系;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CATEGORY_ID")
private Category category;

每当我调用以下 Dao 方法时;

@Query(value = "select distinct category from Category category join fetch category.subCategories subcategories")
public List<Category> findAllCategories();

我得到以下 sql 查询;

    select
        distinct category0_.id as id1_3_0_,
        subcategor1_.id as id1_16_1_,
        category0_.create_time as create2_3_0_,
        category0_.create_user as create3_3_0_,
        category0_.create_userip as create4_3_0_,
        category0_.deleted as deleted5_3_0_,
        category0_.update_time as update6_3_0_,
        category0_.update_user as update7_3_0_,
        category0_.update_userip as update8_3_0_,
        category0_.version as version9_3_0_,
        category0_.name as name10_3_0_,
        subcategor1_.create_time as create2_16_1_,
        subcategor1_.create_user as create3_16_1_,
        subcategor1_.create_userip as create4_16_1_,
        subcategor1_.deleted as deleted5_16_1_,
        subcategor1_.update_time as update6_16_1_,
        subcategor1_.update_user as update7_16_1_,
        subcategor1_.update_userip as update8_16_1_,
        subcategor1_.version as version9_16_1_,
        subcategor1_.category_id as categor11_16_1_,
        subcategor1_.name as name10_16_1_,
        subcategor1_.category_id as categor11_3_0__,
        subcategor1_.id as id1_16_0__ 
    from
        PUBLIC.t_category category0_ 
    inner join
        PUBLIC.t_sub_category subcategor1_ 
            on category0_.id=subcategor1_.category_id 
    where
        (
            category0_.DELETED = '0' 
        )

您能否告诉我为什么上面的查询缺少

和 subcategor1_.DELETED = '0'

在其 where 块内?


我刚刚在我的项目中解决了类似的问题。

不仅可以将 @Where 注释放在实体上,还可以放在您的子集合上。

根据javadoc https://docs.jboss.org/hibernate/orm/4.1/javadocs/org/hibernate/annotations/Where.html%20javadoc:

添加到元素实体或目标的Where子句集合的实体

在你的情况下,它会像:

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "category")
@Where(clause = "DELETED = '0'")
private Set<SubCategory> subCategories = Sets.newHashSet();

请查找已解决的类似问题here https://forum.hibernate.org/viewtopic.php?p=2465131

我相信,与使用 Hibernate Filters 相比,这种解决方案并不具有侵入性。这些过滤器默认被禁用,并在会话级别上运行,因此每次打开新会话时启用它们都是额外的工作,特别是当您的 DAO 通过 Spring Data 等抽象进行工作时

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

@Where 子句在 hibernate join 查询中不起作用 的相关文章

  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • 使用 JUnit 时,有没有办法验证测试方法中是否调用了 try/catch 指令的 Catch 部分?

    例如 如果我想测试以下课程 public class SomeClass public void someMethod try Some code where comething could go wrong catch Exception
  • 需要使用 joda 进行灵活的日期时间转换

    我想使用 joda 解析电子邮件中的日期时间字符串 不幸的是我得到了各种不同的格式 例如 Wed 19 Jan 2011 12 52 31 0600 Wed 19 Jan 2011 10 15 34 0800 PST Wed 19 Jan
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 自动生成Flyway的迁移SQL

    当通过 Java 代码添加新模型 字段等时 JPA Hibernate 的自动模式生成是否可以生成新的 Flyway 迁移 捕获自动生成的 SQL 并将其直接保存到新的 Flyway 迁移中 以供审查 编辑 提交到项目存储库 这将很有用 预
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 从 GitHub 上托管的 Spring Cloud Config Server 访问存储库的身份验证问题

    我在 GitHub 上的存储库中托管配置 如果我将回购公开 一切都好 但如果我将其设为私有 我将面临 org eclipse jgit errors TransportException https github com my user m
  • Java Swing For mac 中的 DJ Native Swing 浏览器

    我有一个用 Swing 制作的 Java 应用程序 并且使用了一个 DJ Native Swing 浏览器 当我尝试在 OS X 上使用它时 它抛出了一个NoClassDefFoundError尽管我添加了 swt jar 但始终如此 有人
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • 返回 Java 8 中的通用函数接口

    我想写一种函数工厂 它应该是一个函数 以不同的策略作为参数调用一次 它应该返回一个函数 该函数根据参数选择其中一种策略 该参数将由谓词实现 嗯 最好看看condition3为了更好的理解 问题是 它没有编译 我认为因为编译器无法弄清楚函数式
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • 转储中的 MySQL 标志

    在查看 mySQL 转储时 我发现了一些东西并且想知道它们是什么 I see 50001 DROP TABLE IF EXISTS xxx 标志 50001 是什么 有它们含义的列表吗 它在 MySQL 的论坛 邮件列表上进行了讨论here
  • JAXB 是否支持 xsd:restriction?

  • 如何将 Markdown 文档批量转换为 HTML?

    我正在用 Markdown 编写一些文档 并为文档的每个部分创建一个单独的文件 我希望能够一次性将所有文件转换为 HTML 但我找不到其他人尝试过同样的事情 我使用的是 Mac 所以我认为一个简单的 bash 脚本应该能够处理它 但我从未在
  • 使用图形 API 从多租户 AD 应用程序获取所有用户

    我正在尝试使用图形 API 获取多租户应用程序的所有用户 为此 我使用请求生成了访问令牌 POST https login microsoftonline com common oauth2 v2 0 token HTTP 1 1 Host
  • Google 表单中的隐藏字段

    我正在为每次提交的表单添加一个唯一的 ID 现在 我将该 ID 设置为第一个字段 并预先填充了该 ID 以及要求用户不要修改该字段的帮助文本 是否有任何选项无法向用户显示此选项 我假设您只对在用户填写表单之前以编程方式分配唯一 ID 的方式
  • 更改子进程中的 iostream

    现在 我正在开发一个项目 其中我需要启动一个子进程来使用 C 在 Linux 中执行一个新程序 并且我需要重定向标准输入和输出 就像在 C 中一样 它们是cin and cout 到一个文件 这意味着在子进程中 标准输入和输出都是文件 子进
  • AngularJS - 如何在整个页面加载时进行重定向?

    我想做一个重定向来重新加载整个页面 以便在页面加载时刷新来自我的网络服务器的 cookie window location Next and window location href Next 不起作用 他们执行的 Angular 路线不会
  • 针对 Woocommerce 中多个产品类别计数的 ajax 添加到购物车的 JS 警报

    在 Woocommerce 中 当达到特定产品类别的购物车中的产品的特定数量时 我尝试显示 JavaScript 甜蜜警报 并在达到二级类别的产品的特定数量时显示另一个警报 商品通过 AJAX 添加到购物车 这就是我想使用 JavaScri
  • XSLT 是 Web 框架的好选择吗?

    我一直认为 XML 以及之前的 SGML 数据是魔鬼的格式 我是旧数据库和平面文件学校的 尽管如此 我们正在开发一款商用网络产品 其框架基于在链中翻译 转换 XML 数据 当我们面试职位以及与潜在客户交谈时 他们喜欢它将做什么的概念 但厌倦
  • 无法在heroku上推送node.js应用程序

    我尝试在heroku 上推送我的node js 应用程序 但是 无法检测到此应用程序的默认语言 我什至尝试过heroku buildpacks set heroku nodejs 但还是无法推动 Counting objects 31 do
  • 在 iPhone 中创建视频

    我需要将图像序列 即 png 转换为 iPhone 中的视频文件 我如何将图像转换为视频 Regards 只需忽略 使用 ffmpeg 等不好的建议即可 这可以在桌面上运行 但是许可证问题 http multinc com 2009 08
  • 拦截C# HttpClient GetAsync

    我有一个 Web 项目 C MVC5 但没有 WebAPI 和一个简单的 HTTP REST 客户端 该客户端调用外部 REST 服务并获取 accessToken 等 我想检查所有 Get PostAsync 调用对 statusCode
  • 在 Ruby 中, put 方法应用到哪个对象?

    在 ruby 中 您使用点来调用方法 或者换句话说 将方法发送到所处理的对象 100 to i 我们正在向对象 100 发送消息 to i 当我们这样做时 puts hello put 方法应用于哪个对象 我是这样想的 self puts
  • 我的程序有内存泄漏

    IBAction play2 CFBundleRef mainBundle CFBundleGetMainBundle CFURLRef soundFileURLRef soundFileURLRef CFBundleCopyResourc
  • 是否可以允许jenkins访问只有root或某些特定程序可以访问的文件?

    我基本上想做的是允许 jenkins 访问我的 android sdk linux 文件夹和所有子目录 我的老板不想自己更改文件夹的权限 我应该在构建过程中这样做 我见过一些在构建过程中在执行 shell 中运行一些命令的示例 是否可以在该
  • 在 WCF 服务上的 AJAX 发出 REST 请求期间启用 CORS 中的 OPTIONS 方法

    我花了7个小时绞尽脑汁想弄清楚这个问题 我在整个网络上进行了搜索 但没有运气 我有一个 Angular 应用程序正在向 WCF 命令行托管服务应用程序发出请求 我设法通过使用这两个类来实现 CORS public class CustomH
  • Subst refl 关闭重复的子目标。这是怎么回事?

    In this https stackoverflow com questions 15608399 how do i remove duplicate subgoals in isabelle线程马蒂厄证明了subst refl关闭重复的
  • 将某些子节点下移到新的孙子级别

    我发现了有关将节点向上移动到父节点的其他问题 但我缺少将它们向下移动到新创建的节点的技巧 Given
  • 如何从列表中删除“\xe2”

    我是 python 新手 正在使用它在我的项目中使用 nltk 对从网页获得的原始数据进行单词标记后 我得到了一个包含 xe2 xe3 x98 等的列表 但是我不需要这些并想删除它们 我只是尝试过 if x in a and if a st
  • @Where 子句在 hibernate join 查询中不起作用

    我有 2 个带有 Where 注释的实体 第一个是类别 Where clause DELETED 0 public class Category extends AbstractEntity 且有如下关系 OneToMany fetch F