当前位置: 首页 > 知识库问答 >
问题:

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

宰父正真
2023-03-14

应用:Spring防尘套

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

运行应用程序时出现以下错误:

通过字段'cityAddressRepository'表示不满足的依赖关系;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'cityAddressRepository'的bean时出错:调用init方法失败;嵌套异常是java.lang.IllegalArgumentException:不是托管类型:类com.city.strom.core.domain.CityAddressEntity atorg.springframework.beans.factory.annotation.AutowiredAnNotationBeanPost处理器$AutowiredFieldElement.inject(AutowiredAnNotationBeanPostProcessor.java:573)~[sping-bean-5.0.0.0. RC1.jar:5.0.0. RC1]

任何帮助都将被指定,我的实施中有什么问题吗

城市地址。Java语言

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;
    }

}

城市地址本质。Java语言

@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()
    {

    }
}

城市地址epository.java

public interface CityAddressRepository extends JpaRepository<CityAddressEntity, Long>{

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

}

共有1个答案

宰父德馨
2023-03-14

CityAddress不是实体,请使用targetClass而不是entityClass。试试这样:

@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

    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;
        }
 类似资料:
  • 问题内容: 我正在尝试使用@SqlResultSetMapping和@ConstructorResult将本机查询的结果映射到POJO。这是我的代码: 然后在我的DAO中: 我已经读到JPA 2.1仅支持此功能,但这就是我正在使用的功能。这是我的依赖项: 我发现了一些资源,其中包括:jpa2.1中的@ConstructorResult映射。但是我仍然没有运气。 我想念什么?为什么找不到SqlRes

  • 我正在尝试使用@SQLResultSetMapping和@ConstructorResult将本机查询的结果映射到POJO。下面是我的代码: 我找到了一些参考资料,其中包括JPA2.1中的@ConstructorResult映射。但我还是没有运气。 我错过了什么?为什么找不到SqlResultSetMapping?

  • 如何在Spring Data Jpa中将映射映射到存储库中的查询? 下面是我的通用存储库源代码。 如下所示,我希望接收queryParams作为参数,并将queryParams对应的键和值映射到where子句。 因为它是一个GenericRepository,所以无法实现,我想把映射的内容放在@Query中。 我一直在搜索,但我找不到任何关于它的信息,所以我不知道如何解决这个问题。 如果有办法,请

  • 我不是JPA/Hibernate方面的专家,我真的不知道我试图实现的是不可能实现的还是我做错了,既然我预计是后者,这里就什么也不做了。 我有一个map ,我正试图将其持久化到一个表中,并遵循了这里描述的示例:使用JPA存储map 但随后我得到一个HibernateException:列值的STATE_MAP中的列类型错误。找到:bigint,应为:char(255) 当我将bigint更改为cha

  • 问题内容: 我一直在研究一个非常简单的JPA示例,并试图将其调整为现有数据库。但是我无法克服这个错误。(下面。)这只是我没看到的一些简单的事情。 在下面的DocumentManager类中(一个简单的servlet,因为这是我的目标),它做了两件事: 插入一行 返回所有行 插入效果很好-一切都很好。问题出在检索上。我尝试了各种参数值,但没有走运,并且尝试了各种更复杂的类注释(如列类型),但都没有成