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

使用javaspringerestapi并将记录插入mysql表

欧阳德运
2023-03-14

我试图使用spring rest API并将结果存储到一个临时表中。以下是我的尝试。我对java和spring很陌生,请原谅我的错误。我的staging表名为“greetingsstaging”。我是spring开发的新手,请帮助理解这个问题。我正在使用JPA和spring。

这是主要应用程序。

package com.javatechie.spring.api;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

import com.javatechie.spring.api.entty.Greetings;
import com.javatechie.spring.api.service.Greet;
import com.javatechie.spring.api.service.GreetInterface;
import com.javatechie.spring.api.service.GreetingsService;

@SpringBootApplication
public class GreetingsConsumerApplication {
    private static RestTemplate rs = new RestTemplate();
    private static String baseUrl = "http://localhost:8080/api/Greetings";

    private static GreetInterface greetInterface;

    @Autowired
    public GreetingsConsumerApplication(GreetInterface theGreetInterface) {
        greetInterface = theGreetInterface;
    }

    public static void main(String[] args) {
        SpringApplication.run(GreetingsConsumerApplication.class, args);

        ResponseEntity<List<GreetingsService>> response = rs.exchange(baseUrl, HttpMethod.GET, null,
                new ParameterizedTypeReference<List<GreetingsService>>() {
                });
        List<GreetingsService> gs = response.getBody();

        for (GreetingsService g : gs) {

            Greetings greetings = new Greetings(g.getId(), g.getName(), g.getAge(), g.getAddress());
            System.out.println("Id : " + greetings.getId() + " name : " + greetings.getName() + " Age : "
                    + greetings.getAge() + " Address : " + greetings.getAddress());
            greetInterface.save(greetings);
        }

    }

}

这是我的服务。

package com.javatechie.spring.api.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import com.javatechie.spring.api.entty.Greetings;
import com.javatechie.spring.api.repository.GreetingsRepository;

@Service
public class Greet implements GreetInterface{

    private GreetingsRepository repo;

    @Autowired
    public Greet(GreetingsRepository repo) {
        super();
        this.repo = repo;
    }
    @Override
    public void save(Greetings obj) {
        repo.save(obj);

    }
}

这是存储库界面。

package com.javatechie.spring.api.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.javatechie.spring.api.entty.Greetings;

@Repository
public interface GreetingsRepository extends JpaRepository<Greetings, Integer> {

}

这是我的pojo课。

package com.javatechie.spring.api.entty;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="greetingsstaging")
public class Greetings {

    int id;
    String name;
    int age;
    String address;

    public Greetings(int id, String name, int age, String address) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "Greetings [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
    }

}

我收到以下例外。

在类路径资源中定义名称为“请求映射处理程序适配器”的 Bean 时出错 [组织/Spring框架/引导/自动配置/web/Servlet/WebMvc自动配置$EnableWebMvc配置.class]:通过方法“请求映射处理程序适配器”参数 1 表示的未满足的依赖关系;嵌套的异常是组织.springframework.bean.factory.Bean创建异常:在类路径资源中定义名称为“mvc转换服务”的bean时出错 [组织/Spring框架/引导/自动配置/web/servlet/WebMvc自动配置$启用WebMvc配置.class]:通过工厂方法进行Bean实例化失败;嵌套异常是组织.Spring框架.豆.豆子实例化异常: 无法实例化 [组织.Spring框架.格式.支持.格式转换服务]: 工厂方法 'mvc转换服务' 抛出异常;嵌套的异常是组织.springframework.bean.factory.Bean创建异常:创建名称为“问候存储库”的bean时出错,该名称为“问候存储库”,定义于com.javatechie.spring.api.repository.问候语中定义的存储库在Jpa存储库注册表上声明@EnableJpaRepositories中定义注册表配置:在设置bean属性“映射上下文”时无法解析对bean“jpa映射上下文”的引用;嵌套的异常是组织.Spring框架.豆.工厂.豆创建异常: 创建名称为“jpa映射上下文”的 Bean 时出错: 调用初始化方法失败;嵌套的异常是 org.Hibernate.注释异常: 没有为实体指定标识符:

我的主要想法是将 API 的结果存储到临时表中。

共有1个答案

水品
2023-03-14

您缺少Greetings类的@Id注释。每个JPA实体必须具有唯一标识它的主键。

@Entity
@Table(name="greetingsstaging")
public class Greetings {

    @Id
    int id;
}
 类似资料:
  • 问题内容: 我在MySQL中用一个表创建了一个数据库: 我尝试使用Java插入记录: 输出似乎成功返回: 但是,当我从MySQL中选择时,插入的记录为空: 为什么插入空白记录? 问题答案: 不,这是行不通的(不适用于真实数据): 更改为: 使用该sql创建一个PreparedStatment,并使用索引插入值:

  • 问题内容: 设想 我需要每天通过电子表格(唯一可用的选项)更新SQL 2008数据库。该格式非常基本,但是可能有数百万条记录。Column1和Column3将具有许多预定义的重复值,这些值已经提取到单独的表中。 电子表格样本 数据库设置 我的数据库设置了三个单独的表: 问题 如何编写SQL来插入与查找表中的信息匹配的记录?我该怎么办: 对此: 问题答案: 您可以尝试这样的事情: 没有任何容错功能,

  • 问题内容: 我不知道为什么我对此查询感到困惑。 我有两个表:带有记录和带有记录。两个表都需要包含相同的数据,但是存在一些不匹配的情况。 我需要编写一个mysql查询以插入从到的丢失记录。 最后,两者和应该相同。 我不想先截断所有条目,然后再从另一个表中插入。因此,请提供任何帮助。 谢谢你。 问题答案: 也可以使用它。这将避免像John Woo的回答那样避免子查询的开销(当系统可能为外部查询的 每条

  • 问题内容: 我在Python中有一个JSON对象。我正在使用Python DB-API和SimpleJson。我正在尝试将json插入MySQL表中。 目前出现错误,我相信这是由于JSON对象中的单引号引起的。 如何使用Python将JSON对象插入MySQL? 这是我收到的错误消息: 另一个错误供参考 这是我正在使用http://pastebin.com/q5QSfYLa的代码的链接 问题答案:

  • OrientDB是一个NoSQL数据库,可以存储文档和面向图形的数据。 NoSQL数据库不包含任何表,那么要如何将数据作为记录插入?在这里,您可以以类,属性,顶点和边的形式查看表数据,类表就像表,属性就像表中的文件。 可以在OrientDB中使用模式定义所有这些实体。 属性数据可以被插入到一个类中。 插入命令在数据库模式中创建一条新记录。 记录可以无模式或遵循一些指定的规则。 以下语句是“插入记录

  • 问题内容: 我想在表中添加可变数量的记录(天) 我已经看到了一个很好的解决方案: 但是可悲的是,这在UDF中不起作用(因为#temp和SET ROWCOUNT)。知道如何实现吗? 目前,我正在使用WHILE和表变量来完成此操作,但是就性能而言,这并不是一个好的解决方案。 问题答案: 这是我正在使用的方法,并且对于我的目的和使用SQL 2000来说效果最佳。因为就我而言,它位于UDF中,所以我不能使