所以我编写原生查询,因为它们非常复杂,无法获得所有需要的数据等等。我目前正面临一个通常由Hibernate/JPA等完成的问题。
想象一下:
@Entity
FooEntity{
@Id
public Long id;
@ManyToMany
public List<FeeEntity> feeEntities;
}
@Entity
FeeEntity{
@Id
public Long id;
@Column
public String name;
}和一些DTO
FooDTO{
private final Long id;
private final List<FeeDTO> someStrings;
public FooDTO(Long id, List<FeeDTO> feeDtos){
...
}
}我的@SqlResultSetMapping基本上看起来像
@SqlResultSetMapping(name = "FooDTO",
classes = @ConstructorResult(targetClass = FooDTO.class, columns = {
@ColumnResult(name = "id", type = Long.class),
//TODO @ColumnResult(name = "feeDtos", type = FeeDtos.class)
})
)命名的原生查询类似于:
@NamedNativeQueries({
@NamedNativeQuery(
name = "FooData",
query = "SELECT MAINSELECT.ID AS id, " +
"???" +
" FROM Foo MAINSELECT WHERE ... " +
...,
resultSetMapping = "FooDTO")
})我必须如何编写原生查询?在没有子查询的情况下,这是可能的吗?或者我必须为结果的每个数据行执行/执行子查询吗?我在我心爱的谷歌上找不到任何东西。
发布于 2019-06-11 21:44:24
这不可能。
SQL查询的结果总是一个表。因此没有嵌套表,因此不能将其映射到Collection。
https://stackoverflow.com/questions/56545124
复制相似问题