sme*_*eeb 4 many-to-many hibernate jpa spring-boot
我正在使用 MySQL 支持的 Spring Boot/JPA。我已经配置了数据库,因此计划使用hibernate.hbm2ddl.auto = validate
(因此 Hibernate 不会尝试为我创建数据库,而是使用我提供的数据库并根据我在代码中定义的实体“验证”它)。
我与我的实体有几个多对多关系,例如Book
和Author
:
// Groovy pseudo code! One book can have multiple authors, and a
// single author can have written many books.
@Entity
class Book {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long id
@Column(name="title")
String title
@ManyToMany
List<Author> authors
}
@Entity
class Author {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Long id
@Column(name="name")
String name
@ManyToMany
List<Book> books
}
Run Code Online (Sandbox Code Playgroud)
在这里,这些类由下表表示:
[books]
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT # PRIMARY KEY
title VARCHAR(50) NOT NULL
[authors]
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT # PRIMARY KEY
name VARCHAR(100) NOT NULL
[books_x_authors]
books_x_authors_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT # PRIMARY KEY
book_id # FK on books
author_id # FK on authors
Run Code Online (Sandbox Code Playgroud)
books_x_authors
我的多对多或“人行横道”表在哪里。这是我非常喜欢并希望尽可能坚持的数据库命名约定。那么我如何配置 Spring Boot/Hibernate 以books_x_authors
用作我的 join/crosswalk 表,而不是期望一个表遵守其自己的约定?
在您的 ManyToMany 下指定包含您需要的所有内容的连接表
@ManyToMany
@JoinTable(name="books_x_authors",
joinColumns={@JoinColumn(name="author_id"}, inverseJoinColumns={@JoinColumn(name="book_id")} )
List<Book> books
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7577 次 |
最近记录: |