Java 使用@Transactional annotated method,@ManyToMany关系-hibernate填充连接表,即使在保存非所属实体时也是如此
我有两个具有@manytomy关系的实体Java 使用@Transactional annotated method,@ManyToMany关系-hibernate填充连接表,即使在保存非所属实体时也是如此,java,hibernate,spring-data-jpa,many-to-many,Java,Hibernate,Spring Data Jpa,Many To Many,我有两个具有@manytomy关系的实体 @Entity public class User { ... @ManyToMany @JoinTable(name = "user_car", joinColumns = { @JoinColumn(name = "fk_user") }, inverseJoinColumns = { @JoinColumn(name = "fk_car") })
@Entity
public class User {
...
@ManyToMany
@JoinTable(name = "user_car",
joinColumns = { @JoinColumn(name = "fk_user") },
inverseJoinColumns = { @JoinColumn(name = "fk_car") })
private List<Car> cars = new ArrayList<>();
...
}
@Entity
public class Car {
...
@ManyToMany(mappedBy = "cars")
private List<User> users = new ArrayList<User>();
...
}
@SpringBootApplication
public class HibernateApplication implements CommandLineRunner {
@Autowired
UserRepository userRepository;
@Autowired
CarRepository carRepository;
public static void main(String[] args) {
SpringApplication.run(HibernateApplication.class, args);
}
@Override
@Transactional
public void run(String... args) {
User first = new User("first");
User second = new User("second");
userRepository.save(first);
userRepository.save(second);
Car vw = createCar("VW");
Car skoda = createCar("skoda");
carRepository.save(vw);
carRepository.save(skoda);
first.getCars().add(vw);
first.getCars().add(skoda);
second.getCars().add(skoda);
vw.getUsers().add(first);
skoda.getUsers().add(first);
skoda.getUsers().add(second);
carRepository.save(vw);
carRepository.save(skoda);
}
private Car createCar(String model) {
Car car = new Car();
car.setModel(model);
return car;
}