小编Viv*_*pta的帖子

MapStruct和Lombok无法收集

正在使用的技术堆栈:

Java 8 MapStruct:1.2.0.Final Lombok:1.16.18 IDE:IntelliJ - 已经安装了Lombok插件

  • 最初,当我删除getter和setter以及添加@Getter@Setter注释时,我遇到了问题,mapstruct无法找到属性并说:Unknown property "id" in result type com.vg.once.dto.OneDto. Did you mean "null"?
  • 我开始知道Lombok 1.16.14或更新版本与MapStruct 1.2.0.Beta1或更新版本是兼容的并且可以一起工作,但我的版本更新,然后仍然需要问题.
  • 我已经尝试过的另一个解决方案是运行Lombok的Delombok插件,但仍然会出现同样的问题.

以下是项目文件:

实体对象:One.java:

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class One {

    private int id;
    private Integer version;
    private int projectId;
    private String title;
    private String code;
    private int sortOrder;

}
Run Code Online (Sandbox Code Playgroud)

DTO对象:OneDTO.java:

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class OneDto {

    private int id;
    private …
Run Code Online (Sandbox Code Playgroud)

intellij-idea lombok java-8 mapstruct intellij-lombok-plugin

38
推荐指数
7
解决办法
1万
查看次数

在 Kotlin 中安全转换为泛型类型时出现异常

我在 kotlin 中使用安全转换选项,即as?当数据类型不兼容时,我仍然收到类转换异常,当我通过编写执行案例的通用方法执行此操作时,会发生这种情况,但是如果我直接执行转换,它会返回正如安全转换所预期的那样,为 null

class CastTest(val data: Any) {

   fun castViaGenericMethod(): TypeA? {
      return castToContext<TypeA>()
   }

   fun castDirectly(): TypeA? {
      return data as? TypeA
   }

   private fun <CONTEXT> castToContext(): CONTEXT? = data as? CONTEXT

}
Run Code Online (Sandbox Code Playgroud)

castViaGenericMethod()->ClassCastException当数据不是 类型时,此方法将抛出异常TypeA。 ->当无法进行强制转换时castDirectly()返回。null

请建议如何做到这一点。

java casting kotlin

5
推荐指数
1
解决办法
1653
查看次数

具有多个参数的MapStruct QualifiedByName

我遇到了一种情况,我的映射方法有3个参数,而这三个参数都用于派生目标类型的属性之一。

我在接口中创建了一个默认的映射方法,保留了派生该属性的逻辑,现在要调用此方法,可以expression = "java( /*method call here*/ )"@Mapping批注中使用。

有什么办法可以对任何mapstruct注释执行此操作,例如@qualifiedByName,我尝试注释具有表达式属性的注释并使用了qualifiedByName,但是它不起作用:

@Mapper
public interface OneMapper {

    @Mapping(target="id", source="one.id")
    //@Mapping(target="qualified",expression = "java( checkQualified (one, projId, code) )")
    @Mapping(target="qualified",qualifiedByName="checkQualifiedNamed")
    OneDto createOne (One one, Integer projId, Integer val, String code);

    @Named("checkQualifiedNamed")
    default Boolean checkQualified (One one, Integer projId, Integer val, String code) {
        if(one.getProjectId() == projId && one.getVal() == val && one.getCode().equalsIgnoreCase(code)) {
            return Boolean.TRUE;
        }
        return Boolean.FALSE;                   
    }
}
Run Code Online (Sandbox Code Playgroud)

java intellij-idea java-8 mapstruct

3
推荐指数
3
解决办法
9846
查看次数

Oracle 中的银行家四舍五入

Oracle中是否有任何内部函数支持银行家舍入,我需要在选择查询中使用半到奇数银行家舍入

sql oracle bankers-rounding

1
推荐指数
1
解决办法
1300
查看次数