Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以将投影接口解析为对象吗?春天_Java_Spring_Hibernate_Spring Data - Fatal编程技术网

Java 可以将投影接口解析为对象吗?春天

Java 可以将投影接口解析为对象吗?春天,java,spring,hibernate,spring-data,Java,Spring,Hibernate,Spring Data,实际上在Spring中有一个投影界面。像这样: public interface DaoObjectProjection{ Integer getTotalAmount(); String getCode(); String getName(); String getLastName(); } 我想把它发送到另一个微服务,我知道不能发送接口,因为如果使用RestTemplate,代理功能不起作用。出于上述原因,我使用了另一个类似的对象: public clas

实际上在Spring中有一个投影界面。像这样:

public interface DaoObjectProjection{
    Integer getTotalAmount();
    String getCode();
    String getName();
    String getLastName();
}

我想把它发送到另一个微服务,我知道不能发送接口,因为如果使用RestTemplate,代理功能不起作用。出于上述原因,我使用了另一个类似的对象:

public class ObjectWantSend {
    private Integer totalAmount;
    private String code;
    private String name;
    private String lastName;

//Getters
//Setters

}

我的问题是,是否存在将我的投影界面直接解析到此对象的方法,或者是否需要这样逐个设置:

ObjectWantSend.setTotalAmount(DaoObjectProjection.getTotalAmount);

我将Hibernate与Spring一起使用。

我认为,正如其他用户所说,您应该使用MapStruct。这可能是您问题的解决方案:

    @Mapper
    public interface ObjectMapper {

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

        @Mapping(source = "totalAmount", target = "totalAmount")
        ObjectWantSend objectWantSend(DaoObjectProjection aux);
    }

该库在Spring和Hibernate中运行得非常好。我希望您觉得它有用。

代理功能是什么意思?这段和这段引用的段落
查询执行引擎在运行时为返回的每个元素创建该接口的代理实例,并将对公开方法的调用转发给目标对象。
@AndrewSI不明白为什么在其余部分使用该接口这个电话打不通。但是,一般来说,将本地数据访问与其他下游交互分开。有时本地数据结构与下游交互所期望的不匹配,有时不匹配。另请参见:好的,谢谢你的回答,如果你想回答问题并给你接受的答案@安德鲁斯