Spring OneToMany -如何将对象列表限制为该对象的一个字段列表



我想知道是否有可能从关系@OneToMany获取一些特定字段的对象列表,而不是整个对象列表:

@Entity
public class Template
...
private Driver driver;
prvate boolean isIpen;
@OneToMany(
mappedBy = "template"
)
private List<Warehouse> warehouses = new ArrayList<>();

我想用Warehouse.name(List<String>)而不是List<Warehouse>的列表获取模板对象的列表。这可能吗?

我的库:

@QueryHints(value = {
@QueryHint(name = org.hibernate.jpa.QueryHints.HINT_PASS_DISTINCT_THROUGH, value = "false")
})
@Query("SELECT at FROM Template at " +
"WHERE at.driver.id = :companyId " +
"AND at.isOpen = true")
@EntityGraph(attributePaths = {"warehouses"})
List<Template> findAllOpenByCompanyId(Long companyId, Pageable pageable);

我想减少对数据库的查询次数

我会尝试使用@ElementCollection@CollectionTable而不是@OneToMany

所以它会变成这样:

@Entity
public class Template
...
private Driver driver;
prvate boolean isIpen;
@ElementCollection
@CollectionTable(
name="the name of the warehouse table",
joinColumns=@JoinColumn(name="warehouse id column")
)
@Column(name="warehouse name column in warehouse table")
private List<String> warehouseNames = new ArrayList<>();

我现在无法测试这个,但希望它能帮助。

最新更新