【发布时间】:2018-07-10 11:30:38
【问题描述】:
我有一个父实体和一个具有一对多关系的子实体。
使用@DataJpaTest(即配置内存数据库)时,以下操作按预期工作:
LOG.info("Creating stops");
Stop stop1 = new Stop(new Time(0), "Acton Town", new HashSet<>());
Set<Stop> stops = new HashSet<>();
stops.add(stop1);
LOG.info("Creating and persisting routes");
Route route = routeRepository.save(new Route("something", "return"));
LOG.info("Adding stops to route");
stops.forEach(route::addStop);
它正确插入了路由和每个子节点,我可以稍后获取路由并返回相同的信息。
但是,当我在使用真实数据源(本地 MySQL 数据库)的同时在服务中重复此操作时,似乎不会发生 CASCADE.ALL 持久化,我最终没有插入停靠点,但路由保持不变并分配了一个 ID。
我已通过在配置双向关系的父级中使用“addEntity”方法来遵循站点周围的建议,但它在测试套件之外不起作用。
有人知道为什么会这样吗?
【问题讨论】:
标签: spring hibernate spring-data-jpa h2 hibernate-cascade