我正在UserRequest使用 JPA Query 從 DB 中檢索對(duì)象,如下所示。@Query("SELECT req.supervisorEmail from User u, UserRequest as req WHERE u.username = req.userRequestName and req.userRequestRole= '4' and u.active=true") public List<UserRequest> getSupervisorEmailIds();我有UserRequest如下 POJO 類(lèi)。public class UserRequest implements Identifiable<Long>, LazilyLoadable {@Id@GeneratedValue(strategy = GenerationType.AUTO)@JsonIgnoreprivate Long id;@Column(name = "supervisor_email")private String supervisorEmail;@Column(name="user_request_name")private String userRequestName;@Column(name="user_request_role")private String userRequestRole;}當(dāng)我試圖迭代UserRequest對(duì)象時(shí),我得到ClassCastException了下面的代碼。List<UserRequest> supervisorEmailIds = userService.getSupervisorEmailIds();for(UserRequest s: supervisorEmailIds) { // throwing exception on this line.if(s!=null) {System.out.println("Printing -->"+s.getSupervisorEmail());}System.out.println("Null error");}以下是我得到的錯(cuò)誤。2019-02-22 00:34:26,719 [http-9191-1] ERROR com.cat.pscs.api.controller.BaseController: 83 - Unhandled exception while processing request for URL : http://localhost:9191/security/users/get-supervisor-emailids with exception : java.lang.String cannot be cast to com.cat.pscs.security.model.UserRequestjava.lang.ClassCastException:java.lang.String 無(wú)法在 com.cat.pscs.security.controller.UserController.getSupervisorEmailIds 中轉(zhuǎn)換為 com.cat.pscs.security.model.UserRequest(UserController.java:320)
3 回答

一只名叫tom的貓
TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
您的查詢返回列表String
,而您希望獲得列表UserRequest
。如下更改查詢應(yīng)該可以完成這項(xiàng)工作:
@Query("SELECT req from User u, UserRequest as req WHERE u.username = req.userRequestName and req.userRequestRole= '4' and u.active=true")

人到中年有點(diǎn)甜
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
您確定下面的行返回 UserRequestList 嗎?我認(rèn)為它返回字符串列表
List<UserRequest> supervisorEmailIds = userService.getSupervisorEmailIds();
只需更改返回 UserRequest 對(duì)象列表的 sql 查詢。

阿晨1998
TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
你在里面@Query
寫(xiě)
SELECT req.supervisorEmail from User u, UserRequest as req...
我想supervisorEmail
是一個(gè)VARCHAR
或CHAR
表列。
您只提取一String
列。
如果你想要UserRequest
(S),你需要
SELECT req from User u, UserRequest as req...
添加回答
舉報(bào)
0/150
提交
取消