Java 按位'的谓词&';JPA2中的操作员签入where子句

Java 按位'的谓词&';JPA2中的操作员签入where子句,java,hibernate,jpa,Java,Hibernate,Jpa,有没有办法使用返回谓词的JPA2在SQl where子句中为位运算符“&”设置条件。1.创建NamedQuery/NativeQuery 2.创建一个扩展org.hibernate.dialogue.mysqldialogue的类mysqldialogue public class MySQLDialect extends org.hibernate.dialect.MySQLDialect { public MySQLDialect() { super();

有没有办法使用返回谓词的JPA2在SQl where子句中为位运算符“&”设置条件。

1.创建NamedQuery/NativeQuery 2.创建一个扩展org.hibernate.dialogue.mysqldialogue的类mysqldialogue

public class MySQLDialect extends org.hibernate.dialect.MySQLDialect {
    public MySQLDialect() {
        super();
        registerFunction("bitwiseAnd", new SQLFunctionTemplate(StandardBasicTypes.BIG_INTEGER,
                "(?1 & ?2)"));
    }
3.确保将te放在“hibernate.cfg.xml”语句下面

com.Mypackage.mysqldialent

4.在dao类中,您可以调用上面的“bitwiseAnd”方法,如下所示

TypedQuery<UserDefClass> q = em.createNamedQuery("YOUR NativeQuery name", UserDefClass.class);
        q.setParameter(0, value);
        q.setParameter(1, new BigInteger(value));
        List<UserDefClass> list = q.getResultList();
TypedQuery q=em.createNamedQuery(“您的NativeQuery名称”,UserDefClass.class);
q、 设置参数(0,值);
q、 setParameter(1,新的BigInteger(值));
List List=q.getResultList();

希望这对某人有所帮助。我希望hibernate JPA社区也为位运算符添加内置帮助。

JPQL不支持此类运算符。唯一允许这样做的持久性标准是JDO及其查询语言JDOQL。如果使用JPA,您必须使用本机查询谢谢您的回复。我正在使用HIbernate和JPA。有许多复杂的查询和许多表联接。编写正确的本机SQL查询将很困难。尝试这样做EntityManager em=this.getEntityManager();CriteriaBuilder=em.getCriteriaBuilder();CriteriaQuery=builder.createQuery(UserDefClass.class);add(builder.equal(***需要在此处添加约束,该约束接受按位(&)运算符********()));select(UserDefClass).where(谓词);你不能用条件来做这件事,所以不要浪费你的时间。谢谢。我接受了你的建议,并将本机查询与MySQL方言结合使用