Java Spring数据JPA:使用@Query注释检查存在的实体ID
我正在尝试使用for-check-exist实体Id创建一个简单的JPQL 我的PlanDetail实体:Java Spring数据JPA:使用@Query注释检查存在的实体ID,java,hibernate,jpa,Java,Hibernate,Jpa,我正在尝试使用for-check-exist实体Id创建一个简单的JPQL 我的PlanDetail实体: Entity @Table(name="T_PLAN_DETAIL") public class PlanDetail extends AbstractProcessEntity { @ManyToOne @JoinColumn(name = "TERRITORY_ID") private Territory territory; ... } public interface Plan
Entity
@Table(name="T_PLAN_DETAIL")
public class PlanDetail extends AbstractProcessEntity {
@ManyToOne
@JoinColumn(name = "TERRITORY_ID")
private Territory territory;
...
}
public interface PlanDetailRepository extends CrudRepository<PlanDetail, Long> {
@Query("SELECT COUNT(e)>0 FROM PlanDetail e WHERE e.terrritoryId=?1")
boolean existsByTerritory(Long territoryId);
}
我想使用断言检查它:
Assert.isTrue(planDetailRepository.existsByTerritory(territoryId), "This territory exist with ID = " + territoryId);
我的PlanDetail实体:
Entity
@Table(name="T_PLAN_DETAIL")
public class PlanDetail extends AbstractProcessEntity {
@ManyToOne
@JoinColumn(name = "TERRITORY_ID")
private Territory territory;
...
}
public interface PlanDetailRepository extends CrudRepository<PlanDetail, Long> {
@Query("SELECT COUNT(e)>0 FROM PlanDetail e WHERE e.terrritoryId=?1")
boolean existsByTerritory(Long territoryId);
}
感谢您的帮助。你能告诉我任何JPQL文档吗。。谢谢。假设您的区域实体有一个名为“id”的字段 将查询更改为:
@Query("SELECT COUNT(e)>0 FROM PlanDetail e WHERE e.territory.id=?1")
是的,我没有terrritoryId。但我有Territory entitiy,我想从Territory entitiy中检查Territory id。我有一个简单的问题,我最近开始使用JPA并使用查询注释编写查询。
queryannotation
查询的执行速度是否比使用命名查询和写入findByProperty
的查询快?