【问题标题】:how to find objects field [duplicate]如何查找对象字段[重复]
【发布时间】:2017-08-31 01:23:35
【问题描述】:

我有位置,我想按公司检索数据库中的所有位置

我可以这样List<Location> findByCompanyId(Long companyId);

但是我怎样才能检索 Locations 的 ID 而不是整个对象

 List<Long> findByCompanyId(Long companyId);

我想要与第一种方法相同的东西,但没有整个对象只有 ids

public class Location extends BaseEntity {

@Column(name = "`street_first`", nullable = false)
private String streetFirst;

@Column(name = "`street_second`")
private String streetSecond;

@Column(name = "`city`", nullable = false)
private String city;

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

@Column(name = "`state`", nullable = false)
private String state;

@Column(name = "`phone`", nullable = false)
private String phone;

@JoinColumn(name = "`company_id`", nullable = false)
private Company company;
}
//getters and setters

【问题讨论】:

  • @NicolasLabrot 不,他正在尝试检索两列并使用查询注释。相反,我正在寻找不使用查询注释的解决方案。
  • 有投影什么的吗?
  • 相关问题和您尝试实现相同目标:使用 spring data jpa 在 N 列上进行投影。抱歉,请参见。 Robert Niestroj 除了@Query 注释之外别无选择

标签: spring spring-data-jpa


【解决方案1】:
@Query("SELECT l.id FROM Location l WHERE l.company.id = :companyId");
List<Long> getLocationIds(@Param("companyId")Long companyId);

【讨论】:

  • 请在 getLocationIds 方法之上使用@Transactional(readOnly=true)
  • @LovaChittumuri 还有其他解决方案吗?使用查询注释是最佳实践吗?
  • 是的,如果您不使用此注释,则会影响性能问题。
猜你喜欢
  • 2021-08-26
  • 2015-03-27
  • 2019-05-01
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多