gpt4 book ai didi

java - 无法解析方法,使用 JPA 数据的 Spring Boot 应用程序

转载 作者:行者123 更新时间:2023-12-01 18:14:58 25 4
gpt4 key购买 nike

我想在辅助类中存储一个方法并从另一个类调用该方法。该方法还从 jpa 存储库获取数据。

出于某种原因,当我从帮助程序类调用该方法时,出现错误:无法解析“DocumentHelper”中的方法“getDocumentListByProduit”。方法名称也不会显示在 IDE 的自动完成功能中。就好像该方法由于某种原因没有被映射。有任何提示为什么吗?提前致谢。

我希望调用该方法的类:

@Entity
@Table(name = "document", schema = "table_name")
public class Document {
private int id;
private String url;
private String type;
private String titre;
private String description;

@Autowired
private DocumentHelper dh;

...

public Map<String, List<Document>> getDocumentListByProduit(int id){
Map<String, List<Document>> ret = dh.getDocumentListByProduit(id);
return ret;
}

辅助类:



@Component
public class DocumentHelper {

@Autowired
private DocumentRepository dr;

public DocumentHelper() {
}


public Map<String, List<Document>> getDocumentListByProduit(int id) {
Map<String, List<Document>> ret = new HashMap<>();
List<Document> listImg = new ArrayList<>();
List<Document> listOther = new ArrayList<>();
List<Document> dList = new ArrayList<>();
try {
dList = dr.getDocumentListByProduit(id);
for (Document tDoc : dList) {
if (tDoc.getType().equals("image")) {
listImg.add(tDoc);
} else {
listOther.add(tDoc);
}
}
ret.put("imageCollection", listImg);
ret.put("otherCollection", listOther);
} catch (Exception e) {
throw new DAOException("Une erreur est survenue : " + e.getMessage());
}
return ret;
}
}


然后存储库:


public interface DocumentRepository extends JpaRepository<Document, Integer> {

// in method getDocumentListByProduit in DocumentHelper
@Query(value = "SELECT * FROM DOCUMENT D, DOCUMENT_PRODUIT DP WHERE D.id = DP.id_document AND DP.id_produit = :id_produit;", nativeQuery = true)
List<Document> getDocumentListByProduit(@Param("id_produit") int id_produit);

}

最佳答案

JPA 不使用 Spring 容器来实例化其实体,因此 Spring 默认情况下不会将依赖项注入(inject)到实体中。

您可以使用 @Configurable 将依赖项注入(inject)到不受 Spring 容器管理的对象中如上所述here 。这种方法需要将 AspectJ 配置到项目中。

另一种方法是在 JPA 使用 AutowireCapableBeanFactory#autowireBean 构造实体后手动注入(inject)依赖项。如果您在不止一种情况下需要这种方法,则由于重复性,这种方法可能被认为是一种不好的做法。

关于java - 无法解析方法,使用 JPA 数据的 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60392527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com