简体   繁体   English

不要使用 spring jpa 从 db 获取信息

[英]Don't get info from db with spring jpa

I'm trying to get data from Oracle.我正在尝试从 Oracle 获取数据。

I have @OneToMany relation in class "Home"我在 class “Home”中有@OneToMany关系

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

I have this repository:我有这个存储库:

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

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

I have a controller which get all rooms by home id:我有一个 controller ,它通过家庭 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;
    }

But when I tried但是当我尝试

http://localhost:9000/room/466

I have the correct count of room objects in the result, but all of them are duplicate of the first.我在结果中有正确的房间对象计数,但它们都是第一个的重复。

How could I fix it?我该如何解决?

SELECT * FROM ROOM WHERE OBJ_ID=?1 is the issue here. SELECT * FROM ROOM WHERE OBJ_ID=?1 是这里的问题。

Use following使用以下

List<ROOM> findAllByRoomId(Long id);

Where Id is room's entity primary id.其中 Id 是房间的实体主 ID。 remove native query code.删除本机查询代码。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM