亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Hibernate HQL結果中避免類型安全警告?

如何在Hibernate HQL結果中避免類型安全警告?

Helenr 2019-12-16 11:04:46
如何在Hibernate HQL結果中避免類型安全警告?例如我有這樣的查詢:Query q = sess.createQuery("from Cat cat");List cats = q.list();如果我嘗試做這樣的事情,它將顯示以下警告Type safety: The expression of type List needs unchecked conversion to conform to List<Cat>List<Cat> cats = q.list();有辦法避免嗎?
查看完整描述

4 回答

?
慕少森

TA貢獻2019條經驗 獲得超9個贊

@SuppressWarnings如建議的那樣,在任何地方使用都是一種不錯的方法,盡管每次調用都會涉及一些手指輸入q.list()。


我建議使用其他兩種技術:


寫一個演員助手


只需將所有內容重構@SuppressWarnings到一個位置:


List<Cat> cats = MyHibernateUtils.listAndCast(q);


...


public static <T> List<T> listAndCast(Query q) {

    @SuppressWarnings("unchecked")

    List list = q.list();

    return list;

}

防止Eclipse為不可避免的問題生成警告


在Eclipse中,轉到“窗口”>“首選項”>“ Java”>“編譯器”>“錯誤/警告”,然后在“通用類型”下,選中復選框 Ignore unavoidable generic type problems due to raw APIs


對于類似的問題,這將關閉不必要的警告,這是不可避免的。


一些評論:


我選擇傳遞Query而不是結果,q.list()因為那樣,這種“欺騙”方法只能用于用Hibernate進行欺騙,而不能用于List一般的欺騙。

您可以為.iterate()etc 添加類似的方法。


查看完整回答
反對 回復 2019-12-16
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

提出問題已有很長時間了,但我希望我的回答可能對像我這樣的人有所幫助。


如果您看一下javax.persistence api docs,將會發現從那時起已經在其中添加了一些新方法Java Persistence 2.0。其中之一就是createQuery(String, Class<T>)回報TypedQuery<T>。您可以像使用TypedQuery它一樣使用,只是Query所有操作現在都是類型安全的,差別很小。


因此,只需將代碼更改為如下所示:


Query q = sess.createQuery("from Cat cat", Cat.class);

List<Cat> cats = q.list();

你們都準備好了。


查看完整回答
反對 回復 2019-12-16
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

我們也使用@SuppressWarnings("unchecked")它,但是我們經常嘗試僅在變量的聲明中使用它,而不是在整個方法中使用它:


public List<Cat> findAll() {

    Query q = sess.createQuery("from Cat cat");

    @SuppressWarnings("unchecked")

    List<Cat> cats = q.list();

    return cats;

}


查看完整回答
反對 回復 2019-12-16
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

嘗試使用TypedQuery代替Query。例如,代替此:


Query q = sess.createQuery("from Cat cat", Cat.class);

List<Cat> cats = q.list();

用這個:-


TypedQuery<Cat> q1 = sess.createQuery("from Cat cat", Cat.class);

List<Cat> cats = q1.list();


查看完整回答
反對 回復 2019-12-16
  • 4 回答
  • 0 關注
  • 350 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號