当前位置: 首页 > 知识库问答 >
问题:

错误:无法为包含多个返回的查询创建TypedQuery

翁钧
2023-03-14
TypedQuery<Media> query = em.createQuery(
                "SELECT m.title, b.isbn, b.authors"
                        + " FROM Book b, Media m" + " WHERE b.isbn = :isbn"
                        + " OR lower(m.title) LIKE :title"
                        + " OR b.authors LIKE :authors", Media.class);
        query.setParameter("isbn", book.getisbn());
        query.setParameter("title", "%" + book.getTitle().toLowerCase()
                + "%");
        query.setParameter("authors", "%" + book.getAuthors() + "%");
        bookList = query.getResultList();

这是我第一次使用JPA。我找不到错误。

共有1个答案

冀越
2023-03-14

作为一种解决办法,要获得由其他实体属性组成的实体,可以在查询中创建该实体,并为其提供构造函数。

查询:

TypedQuery<Media> query = em.createQuery("SELECT NEW package_name.Media(m.title, b.isbn, b.authors)"
+ " FROM Book b, Media m" 
+ " WHERE b.isbn = :isbn"                         
+ " OR lower(m.title) LIKE :title"                         
+ " OR b.authors LIKE :authors", Media.class); 

实体:

public Media(String title, int isbn, String author){

    //-- Setting appropriate values
}
 类似资料:
  • 我正在使用以下JPA查询,我得到了java.lang.IllegalArgumentException:无法为具有多个返回异常的查询创建TypeQuery。 谁能告诉我我的问题有什么错吗.....我是JPA的新成员,我不知道这里有什么问题。如果有人有想法,请告诉我。

  • 问题内容: 此查询有什么问题? 我有错误 ORA-01427:单行子查询返回多个行 01427。00000-“单行子查询返回多个行” 问题答案: 这是您的查询: 这样使用的子查询称为 标量子查询 。可以在可以使用标量值(即单个值,例如数字或字符串)的地方使用此类子查询。 标量子查询必须满足两个条件: 它最多返回一行。 它返回一列。 您的解决方案很简单,使用以下命令: 或者,在Oracle 12C中

  • 我正在尝试将预言机结果列表绑定到摘要列表。但是我的摘要列表有3个类被定义为DB的实体 我有三个实体类A,B,C 我使用以下查询获得结果,但结果无法转换为摘要对象 调试:我确保结果列表不为空,如果我不将其转换为对象,下面的查询可以正常工作 我看到的第一种方法是遍历summaryList,并像这样将它们分配给单个列表,我还没有测试过这种方法,但我认为它可能会给出一个类强制转换异常,因为强制转换以前也有

  • 我收到错误“无法使用请求的结果类型为具有多个返回的查询创建TypeQuery”我尝试了所有列值返回。那次应用程序挂起。我需要在arraylist中获取客户端列表。请帮助,我是JPA新手。 客户端类是

  • 问题内容: 我想在MySQL数据库表上运行查询,以返回列数据具有空格的所有行。例如: 用户 名安迪·戴维斯 彼得· 乔治夫史密斯 史蒂夫· 鲍勃·保罗 该查询将仅返回“安迪·戴维斯”,“杰夫·史密斯”,“鲍勃·保罗”,而忽略“彼得”和“史蒂夫” 有任何想法吗? 问题答案:

  • 问题内容: 我有一个名为X的字段(在Oracle中为列),其值类似于“ a1b2c3”,“ abc”,“ 1ab”,“ 123”,“ 156” 如何编写一个SQL查询,仅返回包含纯数值=不包含字母的X?上例中的156’‘。 从myTable中选择X,其中… ?? 问题答案: 您可以将函数用作: 样品运行: