【问题标题】:How to fetch an id with mapping column in criteria builder如何在标准构建器中使用映射列获取 id
【发布时间】:2020-07-09 01:03:26
【问题描述】:

我有一个名为关联名称的表,该表有 3 列,即 id、settings、creation。 设置与 Set 映射,创建与 Entity 类中的 create 映射。 Set 包含 set_id、set_edit 和 create 包含 create_id 和 create_name。

当我执行 sql 查询时,结果会很好。 "SELECT count(create_id) FROM association where set_id= X'143d3149791c4dd7b4ae08a7074c69d2'"

但是如何在休眠中使用标准构建器。

实际上我想要的意思是,传递 set_id 的参数来搜索数据库并获取与关联表的链接 create_id 计数,但它是在创意上映射,然后如何使用 spring boot 在标准构建器中获取 create_id

【问题讨论】:

  • 我无法理解您的问题。 “我有一张在关联上命名的表”完全没有意义。你能澄清一下吗?发布您的数据库架构和 Hibernate 实体也很有用。

标签: spring-boot hibernate-mapping hibernate-criteria


【解决方案1】:
    Session session = sessionFactory.getCurrentSession();
    CriteriaBuilder builder = session.getCriteriaBuilder();
    CriteriaQuery<AdGroupCreativeAssociation> query = builder.createQuery(AdGroupCreativeAssociation.class);
    Root<AdGroupCreativeAssociation> root = query.from(AdGroupCreativeAssociation.class);
    query.select(root.get("id"));
    TypedQuery<AdGroupCreativeAssociation> q = session.createQuery(query);
    List<AdGroupCreativeAssociation> list =  q.getResultList().stream().filter(
            i -> ((i.getAdsets().getAdsetId().compareTo(adsetId) == 0)
                    && (i.getCreative().getCreativeid()
                            .compareTo(creativeId) == 0)))
            .collect(Collectors.toList());
    List<UUID> resultList = list.stream().map(i -> i.getId()).collect(Collectors.toList());
    return resultList;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    相关资源
    最近更新 更多