java - ArgumentException:在字符 xx 处遇到“”,但应为:[]
问题描述
我对带有连接子句的简单 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;
}
我想我犯了一些非常愚蠢的错误,但我找不到它。
解决方案
这是您的问题中的拼写错误,或者您的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();
}
推荐阅读
- javascript - 组件在 React 测试环境中不会更改路由
- flutter - 错误:找不到“控制器”。您需要调用“Get.put(Controller())”或 Get.lazyPut(()=>Controller())”
- java - 如果该项目阅读器或步骤的文件不存在,如何跳过整个步骤
- asp.net - 如何从 seo 的角度在 asp.net 中生成站点地图
- python - 在 pyplot 中避免使用 .show()
- python - 在脚本本身内获取 .py 源文件的位置 - 也在 os.chdir 之后
- sql - 将行转置为列 Teradata SQL
- java - AQS 如何处理中断
- c# - 我在 Visual Studio 中找不到创建新项目菜单
- python - SparkStatementException:传递值的形状是 x 索引意味着 y