我有一个表格,其中包含列#34; state" (这是一个Enum,可以是“活跃的”或“非活跃的”#);
我想知道JPA2是否有办法当我调用placeRepository.findAll()或placeRepository.getOne(id)时,只选择数据库中标记为" ACTIVE"的行。 ?
类似这样的事情
List<Place> findByStateActiveOnly();
修改
奖金问题:
我现在正在重构我的项目,以便能够将一个地方(和其他实体)添加到待处理状态。因为我添加了一个额外的列&#34; state&#34;现在我必须向我的所有查询添加这样的条件"AND p.state=my.package.State.ACTIVE"
;
@Query("select p from Place p where p.idPlace = ?1 AND p.state=my.package.State.ACTIVE")
如果状态为ACTIVE状态,是否有办法告诉jpa自动选择我?
谢谢!
答案 0 :(得分:3)
使用Hibernate,您可以尝试使用@Where注释您的实体,类似这样的
@Entity
@Where(clause = "state = 'ACTIVE'")
public class Place {...}
答案 1 :(得分:3)
使用参数:
public interface YourRepository ... {
List<Place> findByState(String state);
}
您将调用:
List<Place> placeList = youRepository.findByState("ACTIVE");