当前位置: 首页 > 知识库问答 >
问题:

Spring JpaRepository不删除表中的行

冯新知
2023-03-14

我正在使用postgresql并有两个类。用户:

@Entity
@Table(name="usr") //
public class User implements UserDetails {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
}
@Entity
public class Post {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User author;
}
@Modifying(clearAutomatically = true, flushAutomatically = true)
@Query(value = "DELETE FROM post WHERE id = ?1", nativeQuery = true)
void deleteById(long postId);

尝试在用户中添加@OneTomany。尝试了不同的FetchType,但没有任何帮助。

后知识库:

@Repository
public interface PostRepository extends JpaRepository<Post, Long> {

}

删除这样的帖子:

java prettyprint-override">@DeleteMapping("/{id}")
public String blogPostDelete(@PathVariable("id") long id) {
    postRepository.deleteById(id);
    return "redirect:/blog";
}

我几乎不知道@ManyToOne有问题,但不明白到底是什么

共有1个答案

太叔睿
2023-03-14

在您的控制器中,尝试首先使用'id'获取记录

Post post = postRepository.findById(id)

然后使用return Post对象并调用delete。不需要创建这样的本机查询,JPararePository(CrudRepository)具有您所需的基本内置函数

postRepository.delete(post)
 类似资料:
  • 我有对象主位置和主国家/地区 MasterLocation.java 主位置存储库.java 为什么对象MasterCountries仍然加载在findByLocationNameLikeIgnoreCase上?如何在此存储库中禁用获取主国家/地区? 谢谢

  • 当单击按钮时,我试图删除表中的数据行。我当前的代码在1-3次按下后删除行内容,但我希望它能清除内容,然后在一次按下中添加新内容。 这是我正在使用的代码。。。 5行数据显示在jTable中。再次按下按钮后,将删除两行数据。如果我按下按钮,第二次留下一行数据。第三次按下按钮,所有行都被删除,下一次按下按钮将插入5行数据。理想情况下,我希望这个按钮总是清除行字段,然后添加插入的数据。使每个按钮按下显示新

  • 问题内容: 我有一张桌子。为了快速升级/部署网站,我做了一个新表,其中包含一些新数据,方法是: 现在每个表都有一个PK列,看起来像: 重要的一点是,两个表都依赖于完全相同的序列。没有。就我的目的而言,这似乎还可以。 此后,我加载了新数据并重命名了表,以便将其作为实盘接管,而原始表变成了。现在我尝试删除: 足够公平,列默认值仍取决于顺序。 这是踢脚线。 因此,不再对序列具有任何可见的依赖关系,但是它

  • 问题内容: 我的数据库中有一个表,其中有要删除的重复记录。我不想为此创建具有不同条目的新表。我想要的是从现有表中删除重复的条目,而无需创建任何新表。有什么办法吗? 看到这些都是我的字段: id对于每一行都是唯一的。 L11_data对于相应的动作字段是唯一的。 L11_data具有公司名称,而动作具有行业名称。 因此,在我的数据中,我在L11_data中有各自行业的重复公司名称。 我要拥有的是存储

  • 我的任务:我必须从jsp视图中删除对表“testtable”的每一行操作。 后端MySQL:=我有两个表一个“userinfo”用于aurtherntication,另一个表“testtable”。 对于两个表连接,我使用了jsp中的隐藏字段输入,而不是使用外键关系。 在控制台打印中,我们可以在单击delete按钮后看到com.mysql.jdbc.jdbc4PreparedStatement@1

  • 我得到以下异常: 关于这个案子有什么建议吗?