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

如何在Spring使用Hibernate和MySQL使用查询进行按位操作

郑向阳
2023-03-14

我在mysql表中有一个int列,用于存储与状态相关的位。我对基于状态字段中是否设置了一个或多个位的查询感兴趣。

我尝试了以下方法:Expressions.booleanTemplate(“(status

我在Hibernate和MySQL中使用Spring数据。我试图使用Querydsl查询DB。


共有1个答案

蒙经纶
2023-03-14

首先,您需要在Hibernate中创建按位

public class MySQLDialect extends org.hibernate.dialect.MySQLDialect {

    public MySQLDialect() {
        super();
        registerFunction("bitand", new SQLFunctionTemplate(IntegerType.INSTANCE, "(?1 & ?2)"));
    }
}

然后你可以在querydsl或hibernate中引用它

NumberTemplate<Integer> numberTemplate = Expressions.numberTemplate(Integer.class, "function('bitand', {0}, {1})", path, value);
 类似资料:
  • 问题内容: 我正在使用Jesey在Java(JAX-RS)中实现Restful Web Service。我在Tomcat v7.0上运行它,我使用Hibernate将数据映射到数据库(MySQL)。我有一个查询来获取可交付成果的列表: 它给了我一百个可交付成果,但我想在Task表中拥有前三名。感谢您的帮助。如何修改查询? 请注意,这三个可交付成果不应重复。 与@FGreg答案存在冲突。当我使用这些

  • 编辑-上下文:我正在使用Talend ETL工具,并在查询中使用ISODate或Date或new Date,如以下错误导致失败,因此我需要解决方法: 如果没有以下错误,我无法做到这一点: 大概是因为ETL工具调用: 考虑到我无法在com的查询中使用新日期()。mongodb。util。JSON。parse()方法,是否有解决方法? 我正在使用MongoDB v2.6.3,无法让$date运算符工作

  • 问题内容: 我的MySQL表中有一个BIT类型的字段。我想使用位值存储记录的状态,例如: 每个记录可以一次具有许多状态。对于status1和status3,该值将为1 + 4 =5。我可以使用以下命令查询具有status3的所有记录的表: 我在上有索引,但告诉我未使用任何索引。在这种情况下可以使用索引吗? PS使用单独的多对多链接表是更规范的解决方案,但我想为此提供更多的“扁平”结构。 问题答案:

  • 问题内容: 问题是获取表列数据并将其用作IN函数的值列表。 在此示例中,我创建了2个表格:电影和流派 表“电影”包含3列:id,名称和类型。表“类型”包含2列:id和name。 这两个表都包含一些伪数据: 我的目标是获得这样的结果: 我正在使用此查询,并且部分起作用的唯一问题是它使用IN值列表中字段的第一个值。 结果与我想要的结果有很大的不同: 抱歉,如果我错过了一些数据,我是mysql的新手。

  • 选择e from(从表中选择e name e order by e.refid desc)作为表名e,其中(rownum)介于:satrt和:end之间 我得到的错误为"org.hibernate.hql.internal.ast.QuerySynTaxExcema:意外令牌:(近第1行,第15列" Hibernate查询:从table_name其中rownum之间:start和:end顺序由re

  • 以下MySQL查询是等效的: 然而,行构造器表单(即第一个示例)的强大之处在于,您可以使用它来处理查询任意长度的值对列表。没有它,您必须编写动态sql,这是一个安全风险。使用第一个表单避免了这个棘手的问题。 但是,如何使用预准备状态在JDBC中表示这一点?例如: 我已经研究了setArray,但是如何在数组的值中表示列1和列2的值?我想知道是否接口可以作为这个管道。但是阅读文档时,我看不出它是如何