嗨,
public interface RateRepository extends CrudRepository<Rate,RatePK>, QueryDslPredicateExecutor<Rate>, QuerydslBinderCustomizer<QRate> {
@Override
default void customize(QuerydslBindings bindings, QRate qRate) {
bindings.bind(qRate.rateId).first(
(path, value) -> {
return (path & value > 0) //Something like this, or a function like:
//return (bitwise_AND(path, value) > 0);
});
}
我还尝试使用com.querydsl.core.types.dsl.expressions和com.querydsl.core.types.predicate,如下所示:
bindings.bind(qRate.rateFlag).first(
(path, value) -> {
Expression<Integer> intPath = Expressions.asNumber(path);
Expression<Integer> rateFlag = Expressions.asNumber(value);
Expression<Integer> zeroValue = Expressions.asNumber(0);
Expression<Integer> integerExpression = Expressions.numberOperation(Integer.class, Ops.AND, intPath, rateFlag);
Predicate predicate = Expressions.predicate(Ops.GT, integerExpression, zeroValue);
return predicate;
});
但我得到了一个无效的运算符和错误。
怎么会这样呢?
首先,您需要扩展hibernate方言以支持位操作,如下所示
public class MySQLDialect extends org.hibernate.dialect.MySQLDialect {
public MySQLDialect() {
super();
registerFunction("bitand", new SQLFunctionTemplate(IntegerType.INSTANCE, "(?1 & ?2)"));
}
}
然后可以从querydsl或spring存储库中引用此函数
bindings.bind(qRate.rateFlag).first(
(path, value) -> {
Expression<Integer> zeroValue = Expressions.asNumber(0);
NumberTemplate<Integer> numberTemplate = Expressions.numberTemplate(Integer.class, "function('bitand', {0}, {1})", path, value);
return numberTemplate.gt(0);
});
问题内容: 为了测试使用更基本的构建块(在我的情况下使用Nand,Or和And)构建Xor操作,我需要能够执行Not操作。内置似乎只用一位完成此操作。如果我做: 我应该得到,但是我只是得到。我究竟做错了什么?还是Python只是缺少此基本功能? 我知道Python具有内置的Xor函数,但我一直在使用Python来测试需要构建Xor门的HDL项目/课程的内容。我想在Python中进行测试,但是我不能
问题内容: 请考虑这个例子 位运算符和运算符如何处理布尔变量? 问题答案: Java 中没有按位操作。 并且不在Java中执行按位运算,而是在逻辑运算中进行操作(如 JLS的 §15.22.2中所指定) 。 是逻辑AND(如果且仅当两个参数都为时,它将求和) 是逻辑“或”(如果且仅当至少一个参数为时,它将求和)。 请注意, 同一 运营商用于位运算,但这些只有在两个操作数都是一个类型,可转换为一个整
问题内容: 我很惊讶在Google上找不到这个简单的发音问题的答案。在检查了十几个不同的页面之后,我只想在这里询问… 根据此页面,3&5导致1。5等于7。我唯一的问题就是: 我们如何获得3和5中的1? 如何获得3分7分| 5? 另外,负数呢? 8和-8如何得出8? 果然,用Java编写以下代码: 产生以下输出: 但是同样,如何确定/计算这些结果? 问题答案: 3&5: 3 | 5: Java中的否
考虑以下代码: 我可以理解Python(和其他语言)中的算术运算符,但我从来没有很好地理解过“按位”运算符。在上面的示例中(来自Python书籍),我理解左移位,但不理解其他两个。 此外,位运算符实际用于什么?我想举一些例子。
问题内容: 为什么按位操作打印-1?在二进制中,不为0应该为1。为什么呢? 问题答案: 你实际上很亲密。 在二进制中,不为0应该为1 是的,当我们谈论一点时,这是绝对正确的。 但是,其值为0实际上是全零的32位!将所有32个零转换为32个零。 这是的补码表示形式。 类似地: 也就是说,对于32位无符号二进制补码表示,。 进一步阅读: 补码 这是Java(以及其他系统)用来表示带符号的数字位的系统
问题内容: 我想知道如何实现由位表示的位串的k 循环 右移。 这些代码所做的全部是 返回0 ,如何使其循环移位? 问题答案: 这应该工作: 另请参阅Wikipedia上有关循环移位的文章。