如何在DTO Projection中检索实体?

时间:2019-06-03 09:06:42

标签: java spring-data

我无法从两个实体中检索到包含两个字段的结果集

我尝试添加数据投射接口,但是它检索了不正确的数据

我有两个实体:

@Entity
@Table(schema = "common", name = "entity_a")
public class EntityA {

    @Id
    @Column(name = "code")
    private String code;

    @Column(name = "name")
    private String name;

}



@Data
@Entity
@Table(schema = "common", name = "entity_b")
public class EntityB {

    @Id
    @Column(name = "code")
    private String code;

    @Column(name = "name")
    private String value;

}

我也有一个JPARepository界面

public interface EntityARepository extends JpaRepository<EntityA, String> {

    interface EntityAB {
        String getName();
        String getValue();

    }

    @Query("SELECT a.name as name, b.value as value FROM EntityA as a " +
            "INNER JOIN EntityB as b " +
            "ON a.code = b.code " +
            "WHERE a.code = :code")
    Collection<EntityAB> findAllNamesAndValuesByCode(@Param("code") String code);
}

IDE向我展示了getName()方法链接是正确的,但是从未调用过getValue()...我以为我需要使用其他方法,但是我不知道它是如何完成的。因此,当我得到该查询的结果时,我得到了JdkDynamicAopProxy @ 11111的集合,依此类推……我无法使用此对象。

对我来说最好的方法是检索到对象EntityB的链接,但我无法在EntityAB投影中得到它……我想我应该使用类似

的吸气剂
EntityB getEntityByCode(String code);

并用代码实现它,但这似乎太原始了... 我该怎么做?

0 个答案:

没有答案