首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring,@SqlResultSetMapping映射到JPA存储库

Spring,@SqlResultSetMapping映射到JPA存储库
EN

Stack Overflow用户
提问于 2017-10-18 17:15:52
回答 1查看 10.2K关注 0票数 6

用途:弹簧引导

我试图使用@SqlResultSetMapping@NamedNativeQuery将非实体类映射到JPA存储库。

在运行应用程序时,我会收到以下错误:

通过字段“cityAddressRepository”表示的不满意的依赖关系;嵌套异常是org.springframework.beans.factory.BeanCreationException:错误创建名为“cityAddressRepository”的bean :调用init方法失败;嵌套异常是java.lang.IllegalArgumentException:非托管类型: org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573) ~spring中的类com.city.strom.core.domain.CityAddressEntity -5.0.0.RC1.jar:5.0.0.RC1

任何帮助都会被指定,在我的实施过程中有什么不对吗?

CityAddress.java

代码语言:javascript
复制
public class CityAddress { 

    private static final long serialVersionUID = -4860426805452667396L;

    private Integer objectid;
    private String streetname;
    private String streetnumber;


    public Integer getObjectid() {
        return objectid;
    }
    public void setObjectid(Integer objectid) {
        this.objectid = objectid;
    }
    public String getStreetname() {
        return streetname;
    }
    public void setStreetname(String streetname) {
        this.streetname = streetname;
    }
    public String getStreetnumber() {
        return streetnumber;
    }
    public void setStreetnumber(String streetnumber) {
        this.streetnumber = streetnumber;
    }

}

CityAddressEntity.java

代码语言:javascript
复制
@Entity
@SqlResultSetMapping(
    name="cityaddressmap",
    entities={
        @EntityResult(
           entityClass=CityAddress.class,
              fields={
                  @FieldResult(name="objectid", column="ID"),
                  @FieldResult(name="streetnumber", column="STREETNUMBER"),
                  @FieldResult(name="streetname", column="STREETNAME")
              }         
        )
    }
) 
@NamedNativeQuery(
    name="CityAddressEntity.AllCityAddresses", 
    query="select OBJECTID, ADD_NUM STREETNUMBER, trim(ADD_STREET || ' ' || ADD_STREET_TYPE) STREETNAME from SWPF_PARCEL_V;", 
    resultSetMapping="cityaddressmap")
public class CityAddressEntity implements Serializable{ 

    private static final long serialVersionUID = -4860426805452667396L;

    public CityAddressEntity()
    {

    }
}

CityAddressRepository.java

代码语言:javascript
复制
public interface CityAddressRepository extends JpaRepository<CityAddressEntity, Long>{

    @Query(name="CityAddressEntity.AllCityAddresses")
    public List<CityAddress> AllCityAddresses();

}
EN

回答 1

Stack Overflow用户

发布于 2018-01-10 07:21:27

CityAddress不是实体,使用targetClass而不是entityClass。试着做这样的事:

代码语言:javascript
复制
@SqlResultSetMapping(
    name="cityaddressmap",
    classes={
        @ConstructorResult(
           targetClass=CityAddress.class,
              columns={
                  @FieldResult(name="ID", type=Integer.class),
                  @FieldResult(name="STREETNUMBER", type=String.class),
                  @FieldResult(name="STREETNAME", type=String.class)
              }         
        )
    }
) 

并向CityAddress添加构造函数

代码语言:javascript
复制
    public class CityAddress { 

        private Integer objectid;
        private String streetname;
        private String streetnumber;

        public CityAddress(Integer objectid, String streetname, String streetnumber) {
           this.objectid = objectid;
           this.streetname = streetname;
           this.streetnumber = streetnumber;
        }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46815728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档