Spring-data-jdbc - 如何在多对多关系中设置模式

Spring-data-jdbc - How to set schema in many-to-many relationship

我在此处关注 spring.io 博客:https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates 并且在此处有一个带有 Book 和 Author 实体的示例 SpringBoot 应用程序:https://github.com/b-sridhar/spring-data-jdbc-example

我收到以下错误:No value supplied for the SQL parameter 'demobook': No value registered for key 'demobook'

调试时注意到执行的 SQL 查询是:INSERT INTO demo.book_author (author, demo.book) VALUES (:author, :demobook) 应该是 INSERT INTO demo.book_author (author, book) VALUES (:author, :book)。发生这种情况是因为我将 @Table("demo.book") 作为 Book 实体的注释。如果我删除 table 名称中的 demo 架构,那么 BookAndAuthorsTests 中的测试会顺利进行。

如何设置 schema 为 table Book?

这是 1.0.x 版本中的错误。它在 1.1 中是固定的。

如果您将 spring-boot-starter-parent 升级到 2.2.0.M5,您将获得包含修复程序的 spring-data-jdbc 版本 1.1.0.RC2

通过该修复 table @Table 注释中的名称以及使 NamingStrategy return 模式的方法都有效。

注意:您的配置需要扩展 AbstractJdbcConfiguration 而不是 JdbcConfiguration

另一个注意事项:您的示例项目随后会阻塞,因为 AuthorRef 需要显式映射到 table BOOK_AUTHOR。 一会我就留下PR