Java 我想使用hibernate查询spring数据

Java 我想使用hibernate查询spring数据,java,hibernate,session,spring-data-jpa,Java,Hibernate,Session,Spring Data Jpa,我编写类来使用hibernate查询获取数据。当我使用从EntityManager获取会话时 Session session=null; sessionFactory=entityManager.unwrap(SessionFactory.class); session=(Session) sessionFactory.getCurrentSession(); 或 并在询问会话时将会话转换为EntityManager public class BranchCustomRepos

我编写类来使用hibernate查询获取数据。当我使用从EntityManager获取会话时

Session session=null;
    sessionFactory=entityManager.unwrap(SessionFactory.class);
    session=(Session) sessionFactory.getCurrentSession();

并在询问会话时将会话转换为EntityManager

public class BranchCustomRepositoryImpl implements BranchCustomRepository{

     @PersistenceContext
      private EntityManager entityManager;

    private SessionFactory sessionFactory;



    public Branch findByOrgOrgIdAndBranchId(String orgId, String branchId) {
    //Session session=null;
    //sessionFactory=entityManager.unwrap(SessionFactory.class);
    //session=(Session) sessionFactory.getCurrentSession();

        Session session = (Session) entityManager.getDelegate();
        System.out.println("BranchCustomRepositoryImpl");
        Long orgId2=Long.valueOf(orgId);
        Long branchId2=Long.valueOf(branchId);
        try{
        Query query=  (Query)((EntityManager) session).createQuery("from Branch b where b.org.orgId=:orgId AND b.branchId=:branchId");      
        query.setParameter("orgId", orgId2);
        query.setParameter("branchId", branchId2);      
        return (Branch) query.uniqueResult();
        }catch(Exception e){
            System.out.println("Exception"+e.toString());
        }finally{
            try {
                if(session!=null){
                session.close();
                System.out.println("session closed");
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return null;

    }

}
这就像

java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [java.lang.Long (n/a)]

如果有人知道如何在spring data jpa中使用hibernate查询,请帮助我

因为持久性属性orgId2的类型很长,相应的 创建ParameterExpression时,类型参数也应该很长。所以,由于ParameterExpression的类型很长,所以参数值的类型也应该很长。因此,在设置查询参数时,请执行以下更改

而不是像下面这样的当前行

    query.setParameter("orgId", orgId2);
    query.setParameter("branchId", branchId2);
如下图所示进行更改

    query.setParameter("orgId", Long.valueOf(orgId2));
    query.setParameter("branchId", Long.valueOf(branchId2));  

您有一个可以使用JPQL完美表达的查询,因此无需使用“HibernateAPI”
    query.setParameter("orgId", Long.valueOf(orgId2));
    query.setParameter("branchId", Long.valueOf(branchId2));