小编Mik*_*unu的帖子

使用Hibernate 3.6.3和JPA 2.0创建类型化查询时的AbstractMethodError

我正在将Hibernate和JPA用于一个小项目.

不知何故,当试图获得一个类型化的查询时,

java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.createQuery(Ljava/lang/String;Ljava/lang/Class;)Ljavax/persistence/TypedQuery
Run Code Online (Sandbox Code Playgroud)

被抛出; org.hibernate.ejb.EntityManagerImpl来自hibernate-entitymanager-3.3.2.GA.jar.

抛出上述异常是不行的:

  public Account read(Account entity) {
        EntityManager em = ManagedEntityManagerFactory.getEntityManager();

        String jpql = JPQLGenerator.readAccount();
        TypedQuery<Account> typedQuery =
                em.createQuery(jpql, Account.class);
        typedQuery.setParameter("accountId", entity.getAccountId());
        return typedQuery.getSingleResult();
    }
Run Code Online (Sandbox Code Playgroud)

但是这没关系:

public Account read(Account entity) {
    EntityManager em = ManagedEntityManagerFactory.getEntityManager();

    String jpql = JPQLGenerator.readAccount();

    Query query =
            em.createQuery(jpql);
    query.setParameter("accountId", entity.getAccountId());
    Account account = null;
    Object obj = query.getSingleResult();
    if(obj instanceof Account) {
        account = (Account)obj;
    }
    return account;
}
Run Code Online (Sandbox Code Playgroud)

hibernate jpa entitymanager jpa-2.0

3
推荐指数
1
解决办法
5270
查看次数

按相关实体筛选休眠条件

我有一个包含相关实体集合的实体。

public class Student{

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "COURSE_STUDENT_ID" , insertable=false,updatable=false)
private Set <Course> courses;
Run Code Online (Sandbox Code Playgroud)

我想按课程名称和学生班级 ID 过滤学生。现在我已经弄清楚了如何按类 id 过滤,但我不知道如何按 courseId 过滤,因为 Student 实体有一组课程并且表是相关的。我已经阅读了一些文章,但没有任何代码与我已经读过的代码相匹配。

CriteriaBuilder criteriaBuilder = persistenceStore.createCriteriaBuilder();
CriteriaQuery<Object> criteria = criteriaBuilder.createQuery();
Root<Student> root = criteria.from(Student.class);
List<Predicate> params = new ArrayList<Predicate>();

params.add(criteriaBuilder.equal(root.get("classId"),classId));

Predicate[] predicates = new Predicate[params.size()];
params.toArray(predicates);
criteria.select(root);
criteria.where(criteriaBuilder.and(predicates));
Query query = persistenceStore.createQuery(criteria);
List<Student> resultList = query.getResultList();
Run Code Online (Sandbox Code Playgroud)

java hibernate criteria-api jakarta-ee

3
推荐指数
1
解决办法
1万
查看次数

在JPA中使用Coalesce或Case语句

如何使用coalescecase statement在JPA 2中使用CriteriaBuilder

对于许多已启动的记录,它们将为空,因此对于这些记录,employeeName将为null.我想显示System Generated如果employeeName对于那些在数据库表中initiateBy employee为null的项目为null.

我在实体中有以下关系

项目

@Entity
@Table(name = "PROJECT") 
public class Project {

@Id
@Column(name = "PROJECTID")
private Long projectId;
....
....

@ManyToOne
@JoinColumn(name = "EMPLOYEENUMBER", referencedColumnName = "EMPLOYEENUMBER")
private Employee empNumber;

@ManyToOne
@JoinColumn(name = "INITIATEDBY", referencedColumnName = "EMPLOYEENUMBER")
private Employee initiatedBy;
Run Code Online (Sandbox Code Playgroud)

雇员

@Entity
@Table(name = "EMPLOYEES")
public class Employee {

@Id
@Column(name = "EMPLOYEENUMBER")
private String employeeNo;

@Column(name = "EMPLOYEENAME")
private String employeeName;
.....
.....

@OneToMany(mappedBy = "empNumber") …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa coalesce criteria-api jpa-2.0

3
推荐指数
1
解决办法
1万
查看次数

2d数组和hashmap之间的区别

我对Java比较陌生,我只想确保正确地获得基本概念.所以我的问题是hashmap与2d数组的不同之处.我将举例说明,如果我错了,有人可以纠正我,那将是很好的.所以

  1. 与hashmap相比,您无法直接访问/更改第2个数组的第1个数组.因此,例如,如果你有arr [2] [5]第一个arr [2]你不能将它改为其他东西.换句话说,如果我们有int arr [2] [2]你不能改变它说arr [汽车] [2]而你可以使用hashmap.你根本无法访问它,而你可以使用hashmap.如果你有地图马丁,25你可以很容易地把它变成乔,22.

  2. 您可以在第一个值的hashmap中轻松搜索.如果你想从上一个例子中找到马丁的年龄,你可以轻松地搜索马丁,并且将出现25岁.

  3. 我被教导过2d数组代表一个表.就像是.

ARR [2] [3]

1 [1,2,3]

2 [1,2,3]

但实际上你不能在[]网格外访问/更改1和2.这应该只是作为一个想象的帮助来说明2d数组的概念.

如果我错了,请你纠正我,或者对此作出任何补充评论.

谢谢

java

3
推荐指数
2
解决办法
5684
查看次数

.classpath 和 MANIFEST.MF 之间的区别

将依赖项 jar 添加到 RAD 项目中的 .classpath 文件与将依赖项添加到 MANIFEST.MF 文件之间有什么区别?

classpath rad jakarta-ee

2
推荐指数
1
解决办法
1906
查看次数

JPA - 在IN运算符中使用长数组会抛出强制转换异常

我是JPA的新手并且能够快速获得它,我一直在查询中使用"IN"运算符尝试选择查询,并且已经将错误视为关闭.我所做的是,我从函数中获取一系列(长)消息ID,并使用它来根据这些ID选择记录.这是我的查询

select t from MessageTable t where t.messageId IN (:id)  
query.setParameter("id", id);
Run Code Online (Sandbox Code Playgroud)

我刚刚向您展示了部分代码,实体messageId很长,在Oracle DB中它的编号.当我尝试尽可能长的变量时它工作,当我传递长数组时它似乎不起作用.如果有人遇到这样的问题,可以帮助一些人.这是错误

14:24:49,428 INFO [LongType]无法将值'[J @ 14f76da']绑定到参数:1; [J不能转换为java.lang.Long

hibernate jpa jpql jpa-2.0

2
推荐指数
1
解决办法
5325
查看次数

带有JPA的select子句中的suqueries

我需要在Apache Openjpa 2的select子句中执行子查询.JPA是否支持SELECT子句中的子查询?

我的查询是这样的:

SELECT t.date, t.value, 
  (SELECT COUNT(DISTINCT t2.value2) FROM table t2 WHERE t2.date = t.date)
FROM table t
WHERE ...
Run Code Online (Sandbox Code Playgroud)

当我执行我的查询时,我得到一个类强制转换异常:

Exception in thread "main" <openjpa-2.1.1-SNAPSHOT-r422266:1141200 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: 
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:872)
    at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794)
    at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
    at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:315)
    at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:331)
Caused by: java.lang.ClassCastException: org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect incompatible with org.apache.openjpa.jdbc.sql.SelectImpl
    at org.apache.openjpa.jdbc.sql.SelectImpl.setParent(SelectImpl.java:579)
    at org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.newSelect(SelectConstructor.java:147)
    at org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.evaluate(SelectConstructor.java:87)
    at org.apache.openjpa.jdbc.kernel.exps.SubQ.appendTo(SubQ.java:209)
    at org.apache.openjpa.jdbc.kernel.exps.SubQ.appendTo(SubQ.java:203)
    at org.apache.openjpa.jdbc.kernel.exps.SubQ.newSQLBuffer(SubQ.java:167)
    at org.apache.openjpa.jdbc.kernel.exps.SubQ.selectColumns(SubQ.java:153)
    at org.apache.openjpa.jdbc.kernel.exps.SubQ.select(SubQ.java:148)
    at org.apache.openjpa.jdbc.kernel.exps.SelectConstructor.select(SelectConstructor.java:372)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.populateSelect(JDBCStoreQuery.java:295)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.access$100(JDBCStoreQuery.java:86)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery$1.select(JDBCStoreQuery.java:267)
    at org.apache.openjpa.jdbc.sql.LogicalUnion.select(LogicalUnion.java:297)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.populateUnion(JDBCStoreQuery.java:265)
    at org.apache.openjpa.jdbc.kernel.JDBCStoreQuery.executeQuery(JDBCStoreQuery.java:211)
    at …
Run Code Online (Sandbox Code Playgroud)

subquery jpql jpa-2.0

2
推荐指数
1
解决办法
1461
查看次数

org.hibernate.ejb.criteria.predicate.ComparisonPredicate.render 处的 java.lang.NullPointerException

我刚刚在代码中添加了一个谓词条件,它可以很好地解析列,但不确定为什么会出现错误:

    ERROR com.sl.web.controller.AbstractController logError- Exception occur in Controller: null.
java.lang.NullPointerException
    at org.hibernate.ejb.criteria.predicate.ComparisonPredicate.render(ComparisonPredicate.java:178)
    at org.hibernate.ejb.criteria.predicate.CompoundPredicate.render(CompoundPredicate.java:133)
    at org.hibernate.ejb.criteria.predicate.CompoundPredicate.render(CompoundPredicate.java:128)
    at org.hibernate.ejb.criteria.QueryStructure.render(QueryStructure.java:258)
    at org.hibernate.ejb.criteria.CriteriaQueryImpl.render(CriteriaQueryImpl.java:340)
    at org.hibernate.ejb.criteria.CriteriaQueryCompiler.compile(CriteriaQueryCompiler.java:217)
    at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:587)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
    at $Proxy57.createQuery(Unknown Source)
    at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:443)
    at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:294)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:334)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:319)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:84)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy110.findAll(Unknown Source)
    at com.smartlead.service.impl.DealerManageEnrollmentsServiceImpl.findDealersEnrollmentDataViewByCriteria(DealerManageEnrollmentsServiceImpl.java:126) …
Run Code Online (Sandbox Code Playgroud)

java jpa criteria-api

2
推荐指数
1
解决办法
3406
查看次数

QuerySyntaxException在Hibernate中定位适当的构造函数

当我尝试进行下一个HQL查询时,我得到下一个错误:

org.hibernate.hql.internal.ast.QuerySyntaxException:无法在类[package.CountItemLike]上找到合适的构造函数[SELECT new package.CountItemLike(ll.itemId,COUNT(ll.itemId))FROM package.ItemLike AS ll GROUP BY ll.itemId]

在我的DAO课程中

@Override
public List<CountItemLike> countItemLikes() {

    String hql = "SELECT NEW package.CountItemLike"
            + "(ll.itemId, COUNT(ll.itemId)) "
            + "FROM ItemLike AS ll "
            + "GROUP BY ll.itemId";

    Query query = this.getCurrentSession().createQuery(hql); // ERROR IS HERE

    return (List<CountItemLike>) query.list();
}
Run Code Online (Sandbox Code Playgroud)

POJO

public class CountItemLike {

    private int itemId;
    private int likes;

    public CountItemLike(int itemId, int likes){

        this.itemId = itemId;
        this.likes = likes;        
    }

    public int getItemId() {
        return itemId;
    }

        public int …
Run Code Online (Sandbox Code Playgroud)

hibernate jpql

2
推荐指数
1
解决办法
4208
查看次数

JPA @NamedQuery与子查询相关

我正在尝试创建一个@NamedQuery包含以下相关子查询的内容:

@NamedQuery(name = "Drcomments.findByOrderDesc", query = " SELECT a FROM ( SELECT ROWNUMBER() OVER(ORDER BY d.drcommentsPK.commentSecondaryCode DESC) AS EL_ROWNM , d.drcommentsPK.commentSecondaryCode , d.commentSecondaryCodeDescription FROM Drcomments d WHERE d.drcommentsPK.commentPrimaryCode = 1 ) a WHERE a.EL_ROWNM < 4 and a.EL_ROWNM > 0 ")})    
Run Code Online (Sandbox Code Playgroud)

问题是我收到此错误:

"Exception [EclipseLink-8025] (Eclipse Persistence Services - 2.3.0.v20110604-r9504):  org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing the query [Drcomments.findByOrderDesc:  SELECT a FROM ( SELECT ROWNUMBER() OVER(ORDER BY d.drcommentsPK.commentSecondaryCode DESC) AS EL_ROWNM , d.drcommentsPK.commentSecondaryCode , d.commentSecondaryCodeDescription FROM Drcomments d WHERE …
Run Code Online (Sandbox Code Playgroud)

jpa named-query jpql jpa-2.0

1
推荐指数
1
解决办法
1791
查看次数