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

如何在Spring Boot应用程序中使用JPA删除/getList

陆雅志
2023-03-14

我有一个实体:

@Entity
@Table(name ="cats")
public class Cat {
    @Id
    @Column(name="name")
    private String name;

    @Column(name="age")
    private int age;

    @Column(name="color")
    private String color;

    @Column(name="weight")
    private int weigth;
  ..
}

1.我需要使用EntityManager从数据库中删除它:

@Override
public void delete(Cat cat) {
    entityManager.remove(cat);
}

问题:我有一个map 包含所有这些元素。我从map IllegalArgumentException->“删除一个分离的实例com.entities.cat#cats”中获得它的名称。

问题:如果不按键从数据库中获取,我如何做到这一点?

2.我需要用限制和偏移量getList。

要获得所有元素,我只需使用:
EntityManager.createNativeQuery(“从猫中选择名称、年龄、颜色、体重”);

在没有entityManager的情况下,我使用了

"SELECT name, age, color, weight FROM cats LIMIT ?,?"

共有1个答案

齐驰
2023-03-14

使用EntityManager可以使用Query对象。它为您提供了几种构建查询的不同方法,您可以在文档中看到这些方法。

从那里,您可以使用查询执行选择或执行对数据库的更新。

更新示例

//:id is a parameter you can set
Query query = entityManager.createQuery("delete from Entity e where e.id = :id");
query = query.setParameter("id", id);
query.executeUpdate();
String sql = "select e from Entity e";
TypedQuery<Entity> query = entityManager.createQuery(sql, Entity.class);
System.out.println(query.getResultList());
query = query.setFirstResult(offset);
query = query.setMaxResults(limit);
public void delete(Cat cat) {
    if(!entityManager.contains(cat)) {
        entityManager.merge(cat);
    }

    entityManager.remove(cat);
}

要首次插入实体,还可以使用persist()。有关merge()persist()之间的区别,请参见以下内容。

 类似资料:
  • 我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em

  • 我是kubernetes的新手,需要在openshift平台上使用k8s confimap将springboot应用程序的属性文件外部化。我已将属性文件保存在git repo中,作为“greeter.message=Spring Bootmyapplication.properties已在库伯内特斯上挂载为卷!”并使用“oc create confimap myconfig--from-file=

  • 要获取请求URL,可以在堆栈溢出中找到以下方法。 第一种方法: 第二种方法: 第三种方法: 我不知道在spring boot应用程序中使用哪一个来获取请求URL。 如果我使用第三种方法,那么我是否需要在配置类中创建RequestContextListener的bean,如下所示?

  • 我正在使用notificationcompat.builder构建通知,我基本上遵循以下指南:http://developer.android.com/guide/topics/ui/notifiers/notifications.html 通知小图标是设计在Android状态栏中显示的小白唯一版本。 问题是,无论我做什么,相同的图标是用来指示原始应用程序的,我只是想隐藏它,因为我的应用程序图标也

  • 我已经为Postgresql启用了复制,并且正在使用PGPool进行负载平衡。 我在使用HikariCP甚至Apache DBCP连接到Postgres时遇到了问题。 在SpringBoot应用程序中有没有使用PGPool的方法? 请查找堆栈跟踪: 2018-08-10 10:20:19.124信息37879----[main]com.zaxxer.hikari.hikaridatasource:

  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题