相关疑难解决方法(0)

JPA:如何将本机查询结果集转换为POJO类集合

我在我的项目中使用JPA.

我来到一个查询,我需要在五个表上进行连接操作.所以我创建了一个返回五个字段的本机查询.

现在我想将结果对象转换为包含相同五个字符串的java POJO类.

在JPA中是否有任何方法可以直接将该结果转换为POJO对象列表?

我来到以下解决方案..

@NamedNativeQueries({  
    @NamedNativeQuery(  
        name = "nativeSQL",  
        query = "SELECT * FROM Actors",  
        resultClass = db.Actor.class),  
    @NamedNativeQuery(  
        name = "nativeSQL2",  
        query = "SELECT COUNT(*) FROM Actors",  
        resultClass = XXXXX) // <--------------- problem  
})  
Run Code Online (Sandbox Code Playgroud)

现在在resultClass中,我们是否需要提供一个实际的JPA实体类?或者我们可以将它转换为包含相同列名的任何JAVA POJO类吗?

java jpa

156
推荐指数
7
解决办法
32万
查看次数

是否可以在Spring Repository中使用原始SQL

我需要在Spring Data Repository中使用原始SQL,这可能吗?我看到的一切@Query都是基于实体的.

java hibernate spring-data-jpa

95
推荐指数
5
解决办法
15万
查看次数

将NativeQuery结果映射到POJO

我试图使用带@ConstructorResult的@SqlResultSetMapping将Native查询的结果映射到POJO.这是我的代码:

@SqlResultSetMapping(name="foo",
    classes = {
        @ConstructorResult(
                targetClass = Bar.class,
                columns = {
                    @ColumnResult(name = "barId", type = Long.class),
                    @ColumnResult(name = "barName", type = String.class),
                    @ColumnResult(name = "barTotal", type = Long.class)
                })
    })

public class Bar {

private Long barId;
private String barName;
private Long barTotal;

...
Run Code Online (Sandbox Code Playgroud)

然后在我的DAO中:

Query query = em.createNativeQueryBar(QUERY, "foo");
... set some parameters ...
List<Bar> list = (List<Bar>) query.getResultList();
Run Code Online (Sandbox Code Playgroud)

我已经读过这个功能仅在JPA 2.1中受支持,但这正是我正在使用的.这是我的依赖:

        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.0.Final</version>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

我发现了一些资源,包括这一个:jpa 2.1中的@ConstructorResult映射.但我仍然没有运气.

我错过了什么?为什么不能找到SqlResultSetMapping?

javax.persistence.PersistenceException: org.hibernate.MappingException: Unknown SqlResultSetMapping [foo]
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa pojo

34
推荐指数
5
解决办法
6万
查看次数

我如何在Spring数据存储库中编写SELECT TOP 25 sql查询

一个简单的问题,因为我确信这是愚蠢的.我有以下查询,我可以在NetBeans sql命令窗口中执行:

SELECT TOP 25 * FROM ARCUST_BIG  WHERE arcustno<='300000' ORDER BY arcustno DESC
Run Code Online (Sandbox Code Playgroud)

我的目标是将它放在我的ArcustRepository类中:

公共接口ArcustRepository扩展了JpaRepository {

Arcust findByPrimaryKey(String id);

@Query("SELECT COUNT(a) FROM Arcust a")
Long countAll();

@Query("SELECT TOP 25 a FROM Arcust a WHERE a.arcustno<='?1' ORDER BY a.arcustno DESC")
List<Arcust> findByTop(String arcustno);
}
Run Code Online (Sandbox Code Playgroud)

但是,findBytop查询似乎不起作用,当我用tomcat7启动我的服务时返回:

2013-08-15 08:15:20 ERROR ContextLoader:319 - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'arcustService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.waudware.pics.repository.ArcustRepository com.waudware.pics.service.ArcustService.arcustRepository; nested exception is org.springframework.beans.factory.BeanCreationException: …
Run Code Online (Sandbox Code Playgroud)

java sql spring-data

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

标签 统计

java ×4

hibernate ×2

jpa ×2

pojo ×1

spring-data ×1

spring-data-jpa ×1

sql ×1