【问题标题】:Don't get info from db with spring jpa不要使用 spring jpa 从 db 获取信息
【发布时间】:2020-03-10 03:55:45
【问题描述】:

我正在尝试从 Oracle 获取数据。

我在班级“Home”中有@OneToMany 关系

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "obj_id", referencedColumnName = "obj_id", insertable = false, updatable = false)
private List<Room> roomCollection;

我有这个仓库:

    @Repository
    public interface FkvaRepository extends JpaRepository<ROOM, Long> {

    @Query(value = "SELECT * FROM ROOM WHERE OBJ_ID=?1", nativeQuery = true)
    List<ROOM> findAllByObjectId(Long id);
}

我有一个控制器,它通过家庭 ID 获取所有房间:

@RequestMapping(value = "/room/{id}",
            method = RequestMethod.GET,
            produces = { MediaType.APPLICATION_JSON_VALUE })
    public List<Room> getRoom(@PathVariable(name = "id") Long id) {

        List<Room> roomCollection = roomRepository.findAllByObjectId(id);
        return roomCollection;
    }

但是当我尝试时

http://localhost:9000/room/466

我在结果中有正确数量的房间对象,但它们都与第一个重复。

我该如何解决?

【问题讨论】:

  • 请输入实际代码,当前代码中有一个Room 类和一个ROOM 类。也可以考虑添加Room的代码。

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


【解决方案1】:

SELECT * FROM ROOM WHERE OBJ_ID=?1 是这里的问题。

使用以下

List<ROOM> findAllByRoomId(Long id);

其中 Id 是房间的实体主 ID。移除原生查询代码。

【讨论】:

  • 是的,对于显示重复的表,我必须添加 id 主键值。
猜你喜欢
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 2016-07-09
  • 2017-10-02
  • 2010-10-27
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
相关资源
最近更新 更多