我得到 Invocation of init method failed;嵌套异常是存储库 class 方法调用上的 java.lang.IllegalArgumentException
I'm getting Invocation of init method failed; nested exception is java.lang.IllegalArgumentException on Repository class method Invocation
我在启动服务时遇到以下异常
...org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为 'levelDetailsService' 的 bean 时出错:通过字段 'storeRepo' 表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为 'storeRepo' 的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException:方法 public 抽象 java.util.List com.tcs.opt.promotion.masterservice.dao.repo.StoreRepo.getStoreList(java.lang.Integer,java.util.List,java.lang.Character) 的查询验证失败! ...
这是我在服务层调用仓库的方法
List<Object[]> storeObjs=storeRepo.getStoreList(salesOrgId,storeRequestDTO.getClassId(),'Y');
这里salesOrgId是Integer,storeRequestDTO.getClassId()是List of Integer
回购 class
@Repository
public interface StoreRepo extends JpaRepository<StoreEntity, Integer> {
@Query("select str.store_id,str.store_number,str.store_name,str.city,str.state from StoreEntity str left outer join master.promo_market_store pstr "
+ "on str.store_id=pstr.store_id where str.salesOrgID=:salesOrgID and pstr.level_id in (:levelIdList) and str.activeF=:activeF")
List<Object[]> getStoreList(@Param("salesOrgID") Integer salesOrgID,@Param("levelIdList") List<Integer> levelIdList,@Param("activeF") Character activeF);
}
实体Class
@Entity
@Table(name=MasterQueryConstants.STORE_TBL,schema=MasterQueryConstants.MASTER_SCHEMA)
public class StoreEntity implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name="store_id")
private Integer storeId;
@Column(name="sales_org_id")
private Integer salesOrgID;
@Column(name="store_number")
private Integer storeNumber;
@Column(name="store_name")
private String storeName;
@Column(name="store_description")
private String storeDescription;
@Column(name="active_f")
private Character activeF;
@Column(name="city")
private String city;
@Column(name="state")
private String state;
public Integer getStoreId() {
return storeId;
}
public void setStoreId(Integer storeId) {
this.storeId = storeId;
}
public Integer getSalesOrgID() {
return salesOrgID;
}
public void setSalesOrgID(Integer salesOrgID) {
this.salesOrgID = salesOrgID;
}
public Integer getStoreNumber() {
return storeNumber;
}
public void setStoreNumber(Integer storeNumber) {
this.storeNumber = storeNumber;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getStoreDescription() {
return storeDescription;
}
public void setStoreDescription(String storeDescription) {
this.storeDescription = storeDescription;
}
public Character getActiveF() {
return activeF;
}
public void setActiveF(Character activeF) {
this.activeF = activeF;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public StoreEntity()
{
/**
* Default Constructor
*/
}
}
请帮我解决这个问题,
我会说这个错误意味着@Query 语法不正确。更多详细信息可能会出现在堆栈跟踪的更下方,但在我看来,您可能在查询中混淆了列名和 属性 名称。
您应该使用 Java 知道的 属性 名称,而不是查询中的列名称。
因此,storeId
而不是 store_id
。等等
我在启动服务时遇到以下异常
...org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为 'levelDetailsService' 的 bean 时出错:通过字段 'storeRepo' 表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为 'storeRepo' 的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException:方法 public 抽象 java.util.List com.tcs.opt.promotion.masterservice.dao.repo.StoreRepo.getStoreList(java.lang.Integer,java.util.List,java.lang.Character) 的查询验证失败! ...
这是我在服务层调用仓库的方法
List<Object[]> storeObjs=storeRepo.getStoreList(salesOrgId,storeRequestDTO.getClassId(),'Y');
这里salesOrgId是Integer,storeRequestDTO.getClassId()是List of Integer
回购 class
@Repository
public interface StoreRepo extends JpaRepository<StoreEntity, Integer> {
@Query("select str.store_id,str.store_number,str.store_name,str.city,str.state from StoreEntity str left outer join master.promo_market_store pstr "
+ "on str.store_id=pstr.store_id where str.salesOrgID=:salesOrgID and pstr.level_id in (:levelIdList) and str.activeF=:activeF")
List<Object[]> getStoreList(@Param("salesOrgID") Integer salesOrgID,@Param("levelIdList") List<Integer> levelIdList,@Param("activeF") Character activeF);
}
实体Class
@Entity
@Table(name=MasterQueryConstants.STORE_TBL,schema=MasterQueryConstants.MASTER_SCHEMA)
public class StoreEntity implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name="store_id")
private Integer storeId;
@Column(name="sales_org_id")
private Integer salesOrgID;
@Column(name="store_number")
private Integer storeNumber;
@Column(name="store_name")
private String storeName;
@Column(name="store_description")
private String storeDescription;
@Column(name="active_f")
private Character activeF;
@Column(name="city")
private String city;
@Column(name="state")
private String state;
public Integer getStoreId() {
return storeId;
}
public void setStoreId(Integer storeId) {
this.storeId = storeId;
}
public Integer getSalesOrgID() {
return salesOrgID;
}
public void setSalesOrgID(Integer salesOrgID) {
this.salesOrgID = salesOrgID;
}
public Integer getStoreNumber() {
return storeNumber;
}
public void setStoreNumber(Integer storeNumber) {
this.storeNumber = storeNumber;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getStoreDescription() {
return storeDescription;
}
public void setStoreDescription(String storeDescription) {
this.storeDescription = storeDescription;
}
public Character getActiveF() {
return activeF;
}
public void setActiveF(Character activeF) {
this.activeF = activeF;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public StoreEntity()
{
/**
* Default Constructor
*/
}
}
请帮我解决这个问题,
我会说这个错误意味着@Query 语法不正确。更多详细信息可能会出现在堆栈跟踪的更下方,但在我看来,您可能在查询中混淆了列名和 属性 名称。
您应该使用 Java 知道的 属性 名称,而不是查询中的列名称。
因此,storeId
而不是 store_id
。等等