JPA自定义findOne和findAll

时间:2014-11-27 14:34:47

标签: jpa customization spring-data findall

我有一个表格,其中包含列#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自动选择我?

谢谢!

2 个答案:

答案 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");