use*_*936 5 java spring-mvc spring-data-jpa
应用:弹簧靴
我试图映射与非实体类JPA库 @SqlResultSetMapping
和@NamedNativeQuery。
运行应用程序时出现以下错误:
通过字段“cityAddressRepository”表达的不满意依赖;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“cityAddressRepository”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Not a managed type: class com.city.strom.core.domain.CityAddressEntity at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573) ~ [spring-beans-5.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;
}
}
Run Code Online (Sandbox Code Playgroud)
城市地址实体.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()
{
}
}
Run Code Online (Sandbox Code Playgroud)
CityAddressRepository.java
public interface CityAddressRepository extends JpaRepository<CityAddressEntity, Long>{
@Query(name="CityAddressEntity.AllCityAddresses")
public List<CityAddress> AllCityAddresses();
}
Run Code Online (Sandbox Code Playgroud)
小智 6
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)
}
)
}
)
Run Code Online (Sandbox Code Playgroud)
并将构造函数添加到 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7643 次 |
| 最近记录: |