如何解决有没有可能的方法来映射引用表中的外键名称? (多对多)
我尝试在基于本文的 DDD 上下文中实现多对多关系的参考表(https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates)
我对 JdbcEntity 有不同的命名,因为我有另一个名为 Book
的域实体来处理域逻辑。 (我决定将 Domain model
和 Persistence model
分离,即 JdbcEntity
如下)
问题是类名 BookJdbcEntity
自动映射为 book_author
中的外键名:
"PreparedStatementCallback; bad sql grammar [SELECT `book_author`.`AUTHOR_ID` AS `AUTHOR_ID` FROM `book_author` WHERE `book_author`.`BOOK_JDBC_ENTITY` = ?]; nested exception is java.sql.sqlSyntaxErrorException: (conn=845) UnkNown column 'book_author.BOOK_JDBC_ENTITY' in 'where clause'",
有没有什么办法可以生成下面的sql语句? (book_id
而不是 BOOK_JDBC_ENTITY
)
SELECT `book_author`.`AUTHOR_ID` AS `AUTHOR_ID` FROM `book_author` WHERE `book_author`.`book_id` = ?
Jdbc 实体:
@Table("book")
data class BookJdbcEntity(
@Id val id: Long,val title: String,val isbn: String,val pages: Int,val authors: Set<AuthorRef> = hashSetof()
)
@Table("book_author")
data class AuthorRef(val authorId: Long)
架构:
CREATE TABLE IF NOT EXISTS book
(
id bigint(20) NOT NULL,title VARCHAR(100) NOT NULL,isbn varchar(100) not null,pages INTEGER not null,PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS book_author
(
book_id bigint(20) NOT NULL,author_id bigint(20) NOT NULL,constraint book_id_fk foreign key (book_id) references book (id)
);
解决方法
@Table("book")
data class BookJdbcEntity(
@Id val id: Long,val title: String,val isbn: String,val pages: Int,@MappedCollection(idColumn="book_id")
val authors: Set<AuthorRef> = hashSetOf()
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。