【问题标题】:ArgumentException: Encounter "" at character xx, but expected: []ArgumentException:在字符 xx 处遇到“”,但应为:[]
【发布时间】:2021-12-26 04:17:07
【问题描述】:

我对带有连接子句的简单 SELECT 查询有疑问。

我正在尝试获取 Author 及其书籍列表。 我的查询看起来像:

public Author findAuthorWithBooks(Integer authorId) {
    return (Author) em.createQuery("SELECT a FROM Author a LEFT JOIN a.books WHERE a.id = :authorId")
        .setParameter("authorId", authorId)
        .getSingleResult();
}

但是当代码运行时我得到ArgumentException: Encounter "" at character xx, but expected: []

简化的实体如下所示:

public class Author {
    @OneToMay(mappedBy = "author", fetch=LAZY)
    private Collections<Book> books;
}

public class Book {
    @ManyToOne(fetch=LAZY)
    @JoinColumn(name="AUTHOR_ID")
    private Collections<Book> books;
}

我想我犯了一些非常愚蠢的错误,但我找不到它。

【问题讨论】:

    标签: java jpa jpql openjpa


    【解决方案1】:

    这是您的问题中的拼写错误,或者您的 Book 课程有误。应该是这样的:

    public class Book {
        @ManyToOne(fetch=LAZY)
        @JoinColumn(name="AUTHOR_ID")
        private Author author;
    }
    

    此外,您的查询似乎不正确。请尝试以下操作:

    public Author findAuthorWithBooks(Integer authorId) {
        return (Author) em.createQuery("SELECT a FROM Author a LEFT JOIN a.books b WHERE b.id = :authorId")
            .setParameter("authorId", authorId)
            .getSingleResult();
    }
    

    【讨论】:

      猜你喜欢
      • 2016-02-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      相关资源
      最近更新 更多