mysql - 如何在 Spring 中使用 Hibernate 和 MySQL 来使用 Querydsl 执行按位运算

标签 mysql spring hibernate querydsl

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

我尝试了以下操作:Expressions.booleanTemplate("(status & {0}) = 0", A_BIT_MASK); 但是,这给了我一个InvalidDataAccessApiUsageException:org.hibernate.QueryException:意外的字符:'&'

我正在将 Spring Data 与 Hibernate 和 MySQL 一起使用。我试图使用 Querydsl 查询数据库。

最佳答案

首先你需要在 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);

关于mysql - 如何在 Spring 中使用 Hibernate 和 MySQL 来使用 Querydsl 执行按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799392/

相关文章:

php - 使用不同 MySQL 引擎的 Laravel 4 中的身份验证

java - 如何加快 Camel 路线

java - 列出一个包的所有子包

oracle - 尝试访问已收集的​​连接

php - 当我尝试从 CodeIgniter 中的连接表回显数据时,没有任何反应

MYsql 将 int 连接到 varchar (未按预期工作)

php - 从数据库中获取数据时html网格显示错误

java - 如何在 Spring Boot 2 中定义默认处理程序

java - 奇怪的 JPA 行为,初始化字段为空

sql - 如何使用executeUpdate()删除具有GORM(Grails)和HQL(Hibernate)的实体