spring-boot - 检索新列表具有先前保存的不完整关联对象
问题描述
我正在构建一个小的 Primefaces 应用程序(Joinfaces 3.2.4、Hibernate 和 H2 数据库)。我想注册汽车并立即(在同一视图中)刷新汽车p:dataTable
。一切正常,表格内容随着最近添加的汽车而更新,但一列(显示人员相关数据)为空。
实体:
@Data
@NoArgsConstructor
@Entity
@Table(name="person")
public class Person extends DbAudit implements Serializable{
//Id and another fields
@OneToMany(cascade = CascadeType.ALL, mappedBy = "person")
private List<DbCar> cars;
}
@Data
@NoArgsConstructor
@Entity
@Table(name="car")
public class Car extends DbAudit implements Serializable{
//Id and another fields
@ManyToOne(optional = false)
@JoinColumn(name = "FK", referencedColumnName = "PK_PER")
private DbPerson person;
}
存储库:
@Repository
public interface CarDao extends JpaRepository<DbCar, Integer>{
}
服务:
@Service
public class CarServiceImpl implements CarService{
private @Autowired CarDao carDao;
@Override
@Transactional(readOnly = false)
public DbCar save(DbCar car) {
return carDao.saveAndFlush(car);
}
@Override
@Transactional(readOnly = true)
public List<DbCar> findAll() {
return carDao.findAll();
}
}
控制器:
@Controller(value = "carController")
@ViewScoped
public class CarController implements Serializable{
private @Autowired CarService carService;
@Getter
@Setter
private Car car;
@Getter
@Setter
private List<Car> cars;
public void loadCars() {
cars = carService.findAll();
}
public void save() {
carService.save(car);
// Reset car object
loadCars();
}
}
XHTML 页面:
<!-- Here is register form including a selectOneMenu for choose the Person who owns the car -->
<p:commandButton value="Save" actionListener="#{carController.save}" update="tblCar">
<p:confirm header="..." message="..." icon="ui-icon-alert" />
</p:commandButton>
<p:confirmDialog global="true">
...
</p:confirmDialog>
<!-- Here is cars p:datatTable (value=#{carController.cars}) -->
我注意到,当重新加载列表时,最近保存的汽车有不完整的 Person 对象(除 id 外,所有字段均为空)。然后,如果我保存另一辆车,问题就出在新车上,而以前的汽车不再有问题。但是当页面重新加载 (F5) 时,所有信息都会正确获取。
解决方案
推荐阅读
- powershell - 将日期转换为 unixt 时间戳 - powershell
- python - python - 如何在没有do while的情况下在python循环的末尾而不是在循环的开头进行迭代?
- javascript - JS 按钮会减慢我的表格生成速度吗?
- c - 初始化结构数组时出现分段错误
- android - 注册不包含子域的 Android 深层链接路径
- flutter - Flutter 中的 FCM 后台处理 - iOS
- regex - 用于 JSON 响应的 SED 无效命令代码
- c# - NUnit 和 NSubstitute 无法在 unittest 中正确捕获异常
- angular - 错误:超时 - 异步回调未在 5000 毫秒内调用 karma-jasmine
- python - Pygame Platformer Sprite Collisions 仅以一种方式工作