相关疑难解决方法(0)

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万
查看次数

为什么在JPA EntityManager查询中抛出NoResultException但却找不到?

有人可以告诉我JPA 1.0 EntityManager在通过find检索对象时的内在原因,如果找不到则必须处理null,但是当通过createQuery使用Query接口时getResultList会在找不到时抛出NoResultException.

也许我错过了一些东西,但我觉得它与语言非常不一致,实际上我不得不做很多的重新设计,因为使用查询界面从简单的查找器更改为更细粒度的查询.

多谢你们.

jpa entitymanager

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

hibernate:如何选择表中的所有行

我尝试Select * from LogEntry用Hibernate 做一些事情.插入工作正常:

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

[...]
protected EntityManager manager;

protected final String tableName = "LogEntry";

public DatabaseImpl(DB_TYPE db) {
    this.db = db;
    if (entityManagerFactory != null && entityManagerFactory.isOpen()) {
        entityManagerFactory.close();
    }
    entityManagerFactory = Persistence.createEntityManagerFactory(db.getPersUnit());
    manager = entityManagerFactory.createEntityManager();
}
public void insert(LogEntry entry) {

    manager.getTransaction().begin();
    manager.persist(entry);
    manager.getTransaction().commit();
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用此方法获取插入的值时:public LogEntryList getAll(){

    manager.getTransaction().begin();

    Query query = manager.createNativeQuery("SELECT * FROM " + tableName + ";");
    ArrayList<LogEntry> entries = (ArrayList<LogEntry>) query.getResultList();
    manager.getTransaction().commit();

    return new LogEntryList(entries);
} …
Run Code Online (Sandbox Code Playgroud)

java mysql sql postgresql hibernate

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

标签 统计

hibernate ×2

java ×2

jpa ×2

entitymanager ×1

mysql ×1

postgresql ×1

sql ×1