相关疑难解决方法(0)

JPA 2.0本机查询结果为map

我运行JPA 2.0本机查询,如下所示:

Query query = em.createNativeQuery("SELECT NAME, SURNAME, AGE FROM PERSON");
List list = query.getResultList();
Run Code Online (Sandbox Code Playgroud)

现在list拥有查询返回的所有行.我可以迭代它们,但每个条目都在Object[]哪里:

  • 在索引0我找到了NAME
  • 在索引1处,我找到了SURNAME
  • 在索引3我找到了AGE

有没有人找到办法做这样的事情:

Map<String, Object> row = list.get(index);
String name = row.get("NAME");
String surname = row.get("SURNAME");
Integer age = row.get("AGE");
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为我执行的本机查询是动态的,我不知道SELECT子句中字段的顺序,所以我不知道id的查询将如下所示:

SELECT SURNAME, NAME, AGE FROM PERSON
Run Code Online (Sandbox Code Playgroud)

要么

SELECT AGE, NAME, SURNAME FROM PERSON
Run Code Online (Sandbox Code Playgroud)

甚至

SELECT AGE, SURNAME, NAME FROM PERSON
Run Code Online (Sandbox Code Playgroud)

jpa native

23
推荐指数
2
解决办法
5万
查看次数

映射列表从JPA Query.getResultList()到自定义的TO

我有一个餐桌水果,有四列id,名称,颜色,形状.

表中的条目是:

1, apple, red, round
2, banana, yellow, long
3, tomato, red, round
4, orange, orange, round
Run Code Online (Sandbox Code Playgroud)

现在我创建了一个实体类Fruit映射到上面的表.

@Entity
@Table(name="fruit")
public class Fruit implements Serializable {

@Id
@Column(name="ID")
String id;

@Column(name="NAME")
String name;

@Column(name="COLOR")
String color;

@Column(name="SHAPE")
String shape;

//getters/setters goes here
}
Run Code Online (Sandbox Code Playgroud)

在我的DAO类中,代码是:

String myQuery = "Select f.shape, f.name from Fruit f where f.shape = :shape";
Query query = this.em.createQuery(myQuery);
query.setParameter("shape", "round");
Run Code Online (Sandbox Code Playgroud)

很明显,运行上面的查询将返回3行.

我有一个简单的TO类FruitSearchTO

class FruitSearchTO
{
  String shape;
  String name;

  //getters/setters here
}
Run Code Online (Sandbox Code Playgroud)

此TO符合我的查询返回的行.

但在我的DAO中运行如下:

List<FruitSearchTO> fruitList …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa

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

标签 统计

jpa ×2

hibernate ×1

native ×1