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

Mapstruct和@Cacheable

戴鸿羲
2023-03-14

我有一个用org.mapstruct注释的类。映射器并尝试使用org.springframework.cache.annotation。方法上的可缓存注释。该方法还用org.mapstruct.Named注释。将忽略@Cacheable注释。是否可以在Mapstruct方法上使用@Cacheble

共有1个答案

卢皓轩
2023-03-14

我认为这是不可能的,因为mapstruct处理器似乎正在过滤掉那个注释。但是您可以注入一个bean并缓存该bean的方法,如下所示:

@Mapper(componentModel="spring")
public abstract class Mapper {

@Autowired
protected Bean bean;

@Named("someNamedMethod")
public Object doSomething() {
  return bean.doSomeMagic()
}

@Component
public class Bean {

@Cacheable(your params)
public Object doSomething() {
  your code... }
}
 类似资料:
  • 和此映射器(使用Mapstruct): 当我有一个带有空条的MyFoo实例并尝试将其映射到proto时,我会得到一个NullPointerException。 这是因为映射器的自动生成代码为proto调用了一个自动生成的方法,该方法如下所示:

  • 我在使地图结构和不可变文件正常工作时遇到问题。 要测试的主类 我得到的错误是 我的如下 根据参考,这应该都是开箱即用的。我在这里错过了什么?

  • 我试图让Mapstruct注释处理器在Gradle项目中的IntelliJ中工作。 我所做的: > 在我的中配置了Mapstruct注释处理器: 在“构建、执行、部署->构建工具->gradle->runner”下的首选项中选择了“委托IDE构建/运行操作来分级”

  • 我正在从ModelMapper到MapStruct的转换过程中,到目前为止一切都很顺利,除了在列表上排序和筛选的情况,如果我有一个从域对象到实体的映射,例如: 从一个api中,我想在contactAddressLine1上进行过滤或排序,然后我想查找源代码(或反向映射时的目标代码),以便将其添加到动态jpq或sql查询中。 有没有办法用MapSTRt做到这一点? 使用ModelMapper,我可以

  • 我有一个通用映射器: 在编译时,它会生成以下错误:无法将属性“objects”映射到“dto”。考虑声明/实现一个映射方法:“”。 当我实现map方法时,如错误中所示,我有以下错误:不能为泛型类型变量源生成映射方法。

  • 我在我的项目中使用Mapstruct。在其中一个实体中,我有set[oneToMany]结构。当我在存储库中使用findAll()检索所有数据时,如果没有绑定,则返回一个空的HashSet。