【发布时间】:2023-03-27 21:07:01
【问题描述】:
我有一个可供购买的会话列表。客户购买会话后,如何将 available 字段更改为 0 或 false 以使其不再出现在列表中?
这是我的 Session 实体类:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="date")
private String date;
@Column(name="time")
private String time;
@Column(name="available")
private boolean available;
@Column(name="side")
private String side;
这是我正在尝试使用的查询:
// Only update the available field while leaving everything else alone. Use the
// Modifying annotation when using UPDATE, INSERT and DELETE Queries
@Modifying(clearAutomatically = true)
@Query("UPDATE Session s SET s.available=0")
List<Session>updateStatusNotAvailable(Boolean notAvailable);
【问题讨论】:
-
经过大量研究,我得出的结论是,您无法通过 id 获取实体并使用 JPQL 查询来更新其中一个字段。我发现如果你通过它的 id 获得一个实体,你可以更改表中的所有其他实体,除了你正在更新的实体。我不知道为什么它会这样工作,但确实如此。
标签: java mysql spring hibernate jpql