java - 不使用 jpql 请求删除
问题描述
该方法应该通过他的 id 删除一个人的所有广告。它没有给出错误,我不明白如何进行调试以检查问题所在。
public void deleteAllAdByPersonById(int id) {
EntityManager em = FACTORY.createEntityManager();
EntityTransaction transaction = em.getTransaction();
transaction.begin();
Query query = em.createQuery("DELETE FROM Ad a WHERE a.person.id = :id");
query.setParameter("id", id);
transaction.commit();
em.close();
}
人
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "person_id")
private int id;
@NotEmpty
@NotNull(message = "Name cannot be null")
private String name;
@OneToMany(mappedBy = "person", fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
private Set<Ad> ads = new HashSet<>();
广告
@Entity
public class Ad {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ad_id")
private int id;
...
@ManyToOne
@JoinColumn(name = "person_fk_id")
private Person person;
解决方案
你只需要写
query.executeUpdate();
后
query.setParameter("id", id);
推荐阅读
- c# - 在运行时添加到功能区一次有效
- google-apps-script - 如何在空行后找到单元格行迭代
- php - Shopify REST API - 如何连接?
- qt - 编译时不存在自定义属性?“不能分配给不存在的财产”
- c# - 如何将 curl 请求转换为具有 --resolve 的 HttpClient
- html - 有没有办法让 GIF 在鼠标悬停时播放并暂停?
- arrays - 我不明白为什么我的代码适用于我的结构数组,但不适用于包含该结构数组的结构?
- sql - 将监视添加到 SQL 选择语句
- perl - 启用用户选项以覆盖变量的值
- python - How can I find the file name in a directory?