9

Play 2.4 Java8 JPA プロジェクトで mapstruct を使用しようとしています。私が行った手順:

追加された依存関係

  "org.mapstruct" % "mapstruct-jdk8" % "1.1.0.Beta1",
  "org.mapstruct" % "mapstruct-processor" % "1.1.0.Beta1"

モデル

@Entity
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;            
    private String fullName;          
    private String email;
}

従業員Dto

public class EmployeeDto {

    private String full_name;
    private String email;
}

従業員マッパー

@Mapper
public interface EmployeeMapper {

    EmployeeMapper INSTANCE = Mappers.getMapper(EmployeeMapper.class);

    @Mapping(source = "fullName", target = "full_name")
    EmployeeDto employeeToEmployeeDto(Employee employee);
}

しかし、コンパイルエラーが発生します

 error: Unknown property "full_name" in return type.
[error]     @Mapping(source = "fullName", target = "full_name")

エラーの原因は何ですか?

4

4 に答える 4

14

他の開発者向けの追加ケース: Lombok を使用する場合、maven は MapStruct プロセッサのみを使用します。そのため、Lombok はゲッター/セッターを生成できません。これを解決するには、lombok 依存関係をannotationProcessorPaths.

また、Lombok 1.8.16 以降を使用している場合は、追加する必要がありlombok-mapstruct-bindingます。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${compiler-plugin.version}</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>${org.mapstruct.version}</version>
            </path>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${projectlombok.version}</version>
            </path>
            <!-- This is needed when using Lombok 1.8.16 and above -->
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok-mapstruct-binding</artifactId>
                <version>0.1.0</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>
于 2020-12-16T12:57:42.583 に答える