【发布时间】:2019-04-23 16:21:27
【问题描述】:
我有 SpringBoot 2.1.3 + MySql 5.7 数据库。我正在尝试在 2 个实体之间建立多对多关系:
@Entity
@Data
public class User {
private String name;
@ManyToMany(cascade = CascadeType.ALL)
private List<Hobby> hobbies;
}
@Entity
@Data
public class Hobby {
private String description;
@ManyToMany(mappedBy = "hobbies")
private List<User> users;
}
现在如果我做一个测试:
User user = new User();
user.setName("James");
user.setHobbies(new ArrayList<>());
Hobby hobby = new Hobby();
hobby.setDescription("Golf");
hobby.setUsers(new ArrayList<>());
user.getHobbies.add(hobby);
hobby.getUsers.add(user);
userRepository.save(user);
所有三个表(用户表、爱好表和 jpa 创建的映射表)都被持久化如下:
USER USER_HOBBY HOBBY
id, name iduser, idhobby id, description
1 James 1 1 1 Golf
但如果我现在打电话
List<User> us = userRepository.findAll();
在我们我没有任何爱好实体。它说:
com.sun.jdi.InvocationException occurred invoking method.
我的 application.properties 与 db 配置:
# Connection url for the database "test"
spring.datasource.url = jdbc:mysql://localhost:3306/test?useSSL=false
# ===============================
# = JPA / HIBERNATE
# ===============================
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
我已经按照谷歌找到的所有示例尝试了所有方法。 怎么了??
谢谢
【问题讨论】:
-
嗨,我有一个小问题,是否允许重复的爱好,假设我们只有用户应该选择的预定义爱好,如何实现呢?
标签: mysql spring-boot jpa