我有以下规范
,用于查询绑定到某些ManagedApplication
实体的任何Contact
实体。我传入一个集合
,该集合包含我正在搜索的ManagedApplication
实体的ID。
public static Specification<Contact> findByApp(final Collection<Long> appIds) {
return new Specification<Contact>() {
@Override
public Predicate toPredicate(Root<Contact> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
final Predicate appPredicate = root.join(Contact_.managedApplications)
.get(ManagedApplication_.managedApplicationId).in(appIds);
}
}
}
@Repository
public interface PagingAndSortingContactRepository extends PagingAndSortingRepository<Contact, Long>, JpaSpecificationExecutor<Contact> {
}
final Page<Contact> contacts = pagingAndSortingContactRepository.findAll(ContactSpecification.findByApp(appIds), pageable);
因此,我需要知道的是,如何才能使用此规范
从查询返回的唯一contact
实体?
我知道CriteriaQuery
有一个.distinct()
方法,您可以将布尔值传递给它,但是我没有在我的规范
的TopRedicate()
方法中使用CriteriaQuery
实例。
以下是我的元模型的相关部分。
@StaticMetamodel(Contact.class)
public class Contact_ {
public static volatile SingularAttribute<Contact, String> firstNm;
public static volatile SingularAttribute<Contact, String> lastNm;
public static volatile SingularAttribute<Contact, String> emailAddress;
public static volatile SetAttribute<Contact, ManagedApplication> managedApplications;
public static volatile SetAttribute<Contact, ContactToStructure> contactToStructures;
}
@StaticMetamodel(ManagedApplication.class)
public class ManagedApplication_ {
public static volatile SingularAttribute<ManagedApplication, Integer> managedApplicationId;
}
在topredicate
方法中使用query
参数调用distinct方法。
以下示例:
public Predicate toPredicate(Root<Contact> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
final Predicate appPredicate = root.join(Contact_.managedApplications)
.get(ManagedApplication_.managedApplicationId).in(appIds);
query.distinct(true);
...
问题内容: 我使用以下查询任何与某些实体绑定的实体。我传入一个包含要搜索的实体ID的ID 。 我将此规范传递给我的方法,以检索一个包含所有符合搜索条件的实体的。 这是。 这就是我调用该方法的方式。 这可以正常工作并返回与传入ID对应的任何实体相关联的所有实体。但是,由于我要将该实体与该实体联接,因此如果一个应用ID列表中有多个实体,则查询将返回重复的实体。 因此,我需要知道的是,如何仅使用this
有没有人知道Java10和JVM10规范的版本与以前的版本不同?对于Java8和Java9,有不同的规范,很难看到有什么变化。
什么是SQL和什么是不同的类型?
支持项 后端数据库为 MySQL、Oracle、PostgreSQL、SQLServer; 用户需要对数据库表中某个或多个列进行加密(数据加密 & 解密); 兼容所有常用SQL。 不支持项 用户需要自行处理数据库中原始的存量数据、洗数; 使用加密功能+分库分表功能,部分特殊SQL不支持,请参考SQL使用规范; 加密字段无法支持比较操作,如:大于小于、ORDER BY、BETWEEN、LIKE等;
支持项 将外围数据迁移至 Apache ShardingSphere 所管理的数据库; 将 Apache ShardingSphere 的数据节点进行扩容或缩容。 不支持项 不支持无主键表的扩容和缩容。
支持项 提供一主多从的读写分离配置,可独立使用,也可配合分库分表使用; 独立使用读写分离支持SQL透传; 基于Hint的强制主库路由。 不支持项 主库和从库的数据同步; 主库和从库的数据同步延迟导致的数据不一致; 主库双写或多写; 跨主库和从库之间的事务的数据不一致。主从模型中,事务中读写均用主库。 可选项 配置项 详细说明 默认值 适用范围 queryConsistent 该配置为 true 时