首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Mapper @Mapper错误不存在源参数

@Mapper @Mapper错误不存在源参数
EN

Stack Overflow用户
提问于 2020-01-24 10:15:34
回答 3查看 5.6K关注 0票数 4

我一直在把我的项目从spring转移到Spring,并且引入了嵌入式tomcat,我需要做一些调整,我必须做的只是我在我的老项目中所面临的问题,我有Mapper接口。

当我编译项目时,它就会出现错误。

错误:(12,5) java:源参数.中不存在名为"schoolId“的属性。

我有很多关于它的搜索,有人说lombok依赖项放置在pom中,我试着在map-struct依赖项之前和之后放置它,但是错误仍然存在。

以下是我的类

以下是我面临的错误

EN

回答 3

Stack Overflow用户

发布于 2021-05-25 11:50:59

我认为您应该在文件中重新订购、lombok、mapstruct依赖项,这样就可以了。

严格的订货应该是这样的

  1. lombok
  2. mapstruct

票数 9
EN

Stack Overflow用户

发布于 2020-01-25 04:21:05

@Shermeen您能分享您配置的代码吗?

所以我们交叉验证一下。我还要加上这个例子,请检查一下。

结构

EntityMapper.java

代码语言:javascript
复制
public interface EntityMapper<D, E> {
  E toEntity(D dto);
  D toDTO(E entity);
  List<E> toEntity(List<D> dtoList);
  List<D> toDTO(List<E> entityList);
}

UserMapper.java

代码语言:javascript
复制
import com.ecommerce.auth_service.domain.external_db.User;
import com.ecommerce.auth_service.domain.external_db.dto.UserDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

import java.util.UUID;

@Mapper(componentModel = "spring", uses = {UserMapper.class})
public interface UserMapper extends EntityMapper<UserDTO, User> {

  @Mapping(source = "user_id", target = "user")

  default User fromId(UUID id) {
    if (id == null)
      return null;
    User user = new User();
    user.setUserId(id);
    return user;
  }
}

UserMapperImpl.java

代码语言:javascript
复制
import com.ecommerce.auth_service.domain.external_db.User;
import com.ecommerce.auth_service.domain.external_db.dto.UserDTO;
import com.ecommerce.auth_service.domain.external_db.mapper.UserMapper;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class UserMapperImpl implements UserMapper {
  @Override
  public User toEntity(UserDTO dto) {
    if (dto == null)
      return null;

    User user = new User();
    user.setUserId(dto.getUserId());
    user.setUsername(dto.getUsername());
    user.setEmail(dto.getEmail());
    user.setPassword(dto.getPassword());
    user.setPhoneNo(dto.getPhoneNumber());
    user.setStatus(dto.getStatus());
    user.setStore(dto.getStoreId());
    user.setAuthority(dto.getAuthority());
    user.setPrivileges(dto.getAuthority().getPrivileges());

    return user;
  }

  @Override
  public UserDTO toDTO(User entity) {
    if (entity == null) {
      return null;
    }

    UserDTO userDTO = new UserDTO();

    userDTO.setUserId(entity.getUserId());
    userDTO.setUsername(entity.getUsername());
    userDTO.setEmail(entity.getEmail());
    userDTO.setPassword(entity.getPassword());
    userDTO.setPhoneNumber(entity.getPhoneNo());
    userDTO.setStatus(entity.getStatus());
    userDTO.setStoreId(entity.getStore());

    entity.getAuthority().setPrivileges(entity.getPrivileges());
    userDTO.setAuthority(entity.getAuthority());

    userDTO.setCreatedBy(entity.getCreatedBy());
    userDTO.setCreatedDate(entity.getCreatedDate());
    userDTO.setModifiedBy(entity.getModifiedBy());
    userDTO.setModifiedDate(entity.getModifiedDate());

    return userDTO;
  }

  @Override
  public List<User> toEntity(List<UserDTO> dtoList) {
    if (dtoList == null || dtoList.isEmpty())
      return null;
    List<User> userList = new ArrayList<>(dtoList.size());
    for (UserDTO userDTO : dtoList) {
      userList.add(toEntity(userDTO));
    }
    return userList;
  }

  @Override
  public List<UserDTO> toDTO(List<User> entityList) {
    if (entityList == null)
      return null;
    List<UserDTO> userDTOList = new ArrayList<>(entityList.size());
    for (User user : entityList) {
      userDTOList.add(toDTO(user));
    }
    return userDTOList;
  }
}
票数 0
EN

Stack Overflow用户

发布于 2021-12-23 04:47:12

我对此有着最深刻的体会。在我的示例中,我没有在pom.xml中声明任何pom.xml,我只是在pom中添加了依赖项,如下所示:

代码语言:javascript
复制
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

只需重新排序,并将lombok依赖项向上移动,问题就会得到修正:

代码语言:javascript
复制
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59894382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档