【问题标题】:Using Projections in Spring Data JPA field error在 Spring Data JPA 字段错误中使用 Projections
【发布时间】:2017-10-27 18:52:15
【问题描述】:

我是java Spring的新成员,今天尝试用JPA的CrudRepository查询。我使用Projections

我的仓库:

@Repository
public interface UserRepositoty extends CrudRepository<tbl_user, Integer> {
// search by username
@Query(value = "select (select l.state from tbl_request_love l where l.senderid = u.userid) as state, u.userid as userid,u.username as username,u.nickname as nickname,u.avatar as avatar"
        + " from tbl_user u"
        + " where u.username LIKE CONCAT('%',:username,'%') and u.coupleid is null" , nativeQuery = true)
List<tbl_user_search> findByUsernameEndWith(@Param("username") String username);
}

我的界面:

public interface tbl_user_search {
int getUserid();
String getUsername();
String getNickname();
String getAvatar();
String getState();
}

当我测试我得到这个错误:

无法写入 JSON:无法将类型 [java.lang.String] 转换为值“hihi”的类型 [int];
嵌套异常是 java.lang.NumberFormatException: For input string: \"hihi\";
嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:无法从类型 [java.lang.String] 转换为类型 [int] 以获取值“hihi”;
嵌套异常是 java.lang.NumberFormatException: For input string: \"hihi\"

(通过引用链:
skay.model.api_searchuser[\"result\"]->java.util.ArrayList[0]->com.sun.proxy.$Proxy87[\"userid\"])`

如果我将界面中的 getUserid(); 类型更改为 String,则会完成此错误并获得新的 json。

{
    "state": "Hi",
    "username": "https://forumhumgeduvn.000webhostapp.com/5skay/man.png",
    "userid": "Hi Hi",
    "avatar": "Pending",
    "nickname": "3"
}

但 json 不会按顺序返回字段。我认为这是我的错误的问题。但我不知道解决它。你可以为我分享任何解决方案。谢谢!

【问题讨论】:

    标签: java hibernate spring-mvc jpa spring-data-jpa


    【解决方案1】:

    尝试像这样使用LIKE

    " where u.username LIKE %:username% and u.coupleid is null"
    

    或:

    " where u.username LIKE %?1% and u.coupleid is null"
    

    阅读此Using advanced LIKE expressions

    【讨论】:

    • 我试了一下,发现一个新错误:“字段列表”中的未知列“u.userid”。你能帮帮我吗?
    • @phạmtuấn 你可以尝试使用这个查询来代替SELECT l.state AS state, u.userid AS userid, u.username AS username, u.nickname AS nickname, u.avatar AS avatar FROM tbl_user u, tbl_request_love l WHERE l.senderid = u.userid AND u.username LIKE %?1% AND u.coupleid IS NULL
    猜你喜欢
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    相关资源
    最近更新 更多