java - 我正在调用 init 方法失败;嵌套异常是存储库类方法调用上的 java.lang.IllegalArgumentException
问题描述
开始服务时出现以下异常
... org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“levelDetailsService”的bean时出错:通过字段“storeRepo”表达的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“storeRepo”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Validation failed for query for public abstract java.util.List com.tcs.opt.promotion.masterservice.dao.repo.StoreRepo.getStoreList(java.lang.Integer,java.util.列表,java.lang.Character)!...
这是我在服务层中对存储库的方法调用
List<Object[]> storeObjs=storeRepo.getStoreList(salesOrgId,storeRequestDTO.getClassId(),'Y');
这里 salesOrgId 是整数,storeRequestDTO.getClassId() 是整数列表
回购类
@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);
}
实体类
@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
. ETC
推荐阅读
- python - 具有 N 个隐藏层的 H2O 自动编码器的形状/结构是什么?
- javascript - 块序号输入
- x86 - JMP 指令如何影响 8086 的工作?
- reactjs - 我可以获得一个如何取消 MobX 流的示例吗?
- java - Git:将自动合并文件变成有冲突的文件
- r - 如何以 TRUE 和 FALSE 为条件计算运行总和
- matlab - 在 MATLAB 中计算测地线距离
- python - 为什么我通过使用 keras 数据生成器和自定义生成器读取相同的图像来获得不同的数组
- linux - 是否有任何理解 bash 颜色的 Linux 文本编辑器?
- java - JUnit/Mockito 验证 `any(HttpPut.class)` 但是当其他实例也使用时通过