我想知道是否有可能从关系@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<>();
我现在无法测试这个,但希望它能帮助。