相关疑难解决方法(0)

如何处理未经检查的投射警告?

Eclipse正在向我发出以下形式的警告:

类型安全:从Object到HashMap的未选中转换

这是来自对我无法控制的API的调用返回Object:

HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
  HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
  return theHash;
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想避免Eclipse警告,因为理论上它们至少表明存在潜在的代码问题.但是,我还没有找到一种消除这种方法的好方法.我可以将涉及的单行提取到方法中并添加@SuppressWarnings("unchecked")到该方法,从而限制了我忽略警告的代码块的影响.有更好的选择吗?我不想在Eclipse中关闭这些警告.

在我来到代码之前,它更简单,但仍然引发了警告:

HashMap getItems(javax.servlet.http.HttpSession session) {
  HashMap theHash = (HashMap)session.getAttribute("attributeKey");
  return theHash;
}
Run Code Online (Sandbox Code Playgroud)

当您尝试使用哈希时,问题出在其他地方,您会收到警告:

HashMap items = getItems(session);
items.put("this", "that");

Type safety: The method put(Object, Object) belongs to the raw type HashMap.  References to generic type HashMap<K,V> should be parameterized.
Run Code Online (Sandbox Code Playgroud)

java generics warnings

583
推荐指数
12
解决办法
42万
查看次数

在Hibernate中使用本机SQL查询将结果集添加到DTO中

我有一个如下查询

select f.id, s.name, ss.name
from first f
left join second s on f.id = s.id
left join second ss on f.sId = ss.id
Run Code Online (Sandbox Code Playgroud)

如果我可以使用HQL,我会使用HQL构造函数语法直接用结果集填充DTO.但是,由于hibernate不允许左连接而没有关联,我必须使用Native SQL Query.

目前,我循环遍历JDBC样式的结果集并填充DTO对象.有没有更简单的方法来实现它?

java orm hibernate resulttransformer native-sql

37
推荐指数
1
解决办法
6万
查看次数

JPA Query.getResultList() - 以通用方式使用

我正在创建一个包含多个表的复杂查询,需要列出结果.通常,我正在使用EntityManager并将结果映射到JPA-Representation:

UserEntity user = em.find(UserEntity.class, "5");
Run Code Online (Sandbox Code Playgroud)

然后我可以在用户UserEntity类定义它时访问所有值.但是,如何访问本机多表查询返回的字段值?我得到的是一个对象列表.到目前为止这很好,但对象是什么"是"?阵列?地图?采集?...

//simpleExample
Query query = em.createNativeQuery("SELECT u.name,s.something FROM user u, someTable s WHERE s.user_id = u.id");
List list = query.getResultList();

//do sth. with the list, for example access "something" for every result row.
Run Code Online (Sandbox Code Playgroud)

我想答案很简单,但是大多数示例只显示直接转换为targetClass时的用法.

PS:在示例中,我当然可以使用类映射.但在我的情况下someTable不是由JPA管理,因此我没有实体,也没有它的类表示,因为我加入了20个表,我不想创建所有的类只是为了访问这些值.

java hibernate jpa

26
推荐指数
4
解决办法
11万
查看次数

将Hibernate结果转换为对象列表

我的DAO中有一个hibernate调用,看起来像这样

List<Associate> associate = (List<Associate>)session.createSQLQuery("SELECT * FROM associates WHERE fk_id = :id AND fk_associate_id = (SELECT id FROM users WHERE fk_user_type = 2)").setParameter("id", id).list();
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,说我无法将结果列表强制转换为模型类型Associate.我不明白为什么会这样.我只返回关联表中的字段.

java hibernate

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×4

hibernate ×3

generics ×1

jpa ×1

native-sql ×1

orm ×1

resulttransformer ×1

warnings ×1