【问题标题】:Problems with native query spring data JPA returns empty JSON array with empty objects本机查询弹簧数据的问题 JPA 返回带有空对象的空 JSON 数组
【发布时间】:2021-02-25 02:44:11
【问题描述】:

我正在使用 Spring Data JPA 和 sql 查询学习 Spring 5 MVC

我试图在我的 spring api restful 示例中使用本机查询,但是当我运行项目时,我的方法返回一个空的 json 对象。

我的模型课

@Entity
@Table(name = "bicycle")
public class Bicycle
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    
    @Column(name="name")
    private String name;
    
    @Column(name="year")
    private int year;
}

我的仓库类

@Repository
public interface BicycleRepository extends CrudRepository<Bicycle, Long>
{
    @Query(value = "SELECT * from db_bicycles.bicycle", nativeQuery = true)
    public List<Bicycle> obtenerTodos();
}

我的控制器类

@RestController
@RequestMapping("/api")
public class BicycleController
{
    @Autowired
    private BicycleRepository bicycleRepository;
    
    //create get all bicycles
    @GetMapping("/bicycles")
    public List<Bicycle> getAllBicycles()
    {
        return bicycleRepository.obtenerTodos();
    }   
}

我的应用程序属性

spring.datasource.url=jdbc:mysql://localhost/db_bicycles?useUnicode=true&useJDBCCompilantTimeZoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true

此表有 2 行。

【问题讨论】:

  • 嗨,您所说的 db_bicycles 是什么意思。谢谢
  • 在你的 Bicycle 类中,有没有 getter 和 setter ?如果没有,请尝试添加 getter 和 setter,然后重试。
  • 是的,出于某种原因,STS 只让我成为二传手,而不是二传手,谢谢。

标签: java spring-boot spring-data-jpa nativequery


【解决方案1】:

解决办法是添加getter和setter,eclipse(STS)只给我添加setter

【讨论】:

    【解决方案2】:
    1. 在你的 POJO 类中使用 getter/setter

    2. 您不需要编写查询来检索所有记录。只需使用 findAll() 方法 可以在 rawRepository 中找到。

    bicycleRepository.findAll();(将返回您的 POJO 类的列表。)

    1. 确保表中有数据。如果没有,则使用 Setter/Construction

    注入以填充数据。或者您可以使用 save() 方法进行 POST 调用以填充表中的数据。

    【讨论】:

    • 我不能像 orm 一样使用休眠(映射外键等)。表经常变化,原生查询有助于避免崩溃,只需替换 sql 查询,结果与我创建的类相同。
    • 不同意,你在这里分享的我解释过的空调。如果表经常变化,那么我们将有很多方法。无论如何,如何处理代码由您决定
    • 公司政治,公司说必须是带JPA的sql,没有spring JDBCTemplate
    【解决方案3】:

    如果您在项目中使用 lombok 和 Spring Tools Suite,请尝试运行 Maven Clean 和 Maven Install。

    mvn clean install
    

    之后,您可以运行该项目。它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2016-05-21
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 2020-09-05
      • 2023-03-07
      相关资源
      最近更新 更多