【发布时间】:2017-04-15 17:07:22
【问题描述】:
我正在使用 Spring Data 和 Hibernate 作为 Spring Boot 的 JPA 实现。我是新手。 我有一个实体,我在其中维护两个已经存在的实体之间的映射,并且该映射中的条目仅在特定更新时出现。
@Entity
@Table(name = "song_genres")
public class SongGenres {
public SongGenres(Song song, List<Genre> genres) {
this.genres = genres;
this.song = song;
}
public SongGenres() {
// Empty constructor as required by hibernate
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "song_id")
private Song song;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "genre_id")
private List<Genre> genres;
public List<Genre> getGenres() {
return genres;
}
}
我正在尝试一次插入与一首歌曲相关的所有流派值,使用
SongGenres songGenres = new SongGenres(song, genres);
songGenresRepository.save(songGenres);
但这给出了一个错误
java.sql.SQLException: 字段 'genre_id' 没有默认值
并且 sql 日志显示单行插入
休眠:插入 song_genres (song_id) 值 (?)
如何在没有级联的情况下实现一对多的多行插入?
【问题讨论】:
标签: mysql hibernate jpa spring-data spring-data-jpa