Java 类javax.persistence.Tuple 实例源码

项目:r01fb    文件:DBFindForModelObjectBase.java   
@Override
public FindOIDsResult<O> findAll(final UserContext userContext) {
    CriteriaBuilder builder = _entityManager.getCriteriaBuilder();

    // use projections to return ONLY the oid (see http://stackoverflow.com/questions/12618489/jpa-criteria-api-select-only-specific-columns)
    CriteriaQuery<Tuple> query = builder.createTupleQuery();
    Root<DB> root = query.from(_DBEntityType);
    if (Facetables.hasFacet(_modelObjectType,HasVersionableFacet.class)) {
        query.multiselect(root.get("_oid"),
                          root.get("_version"));
    } else {
        query.multiselect(root.get("_oid"));
    }
    List<Tuple> tupleResult = _entityManager.createQuery(query)
                                                    .setHint(QueryHints.READ_ONLY,HintValues.TRUE)
                                            .getResultList();
    FindOIDsResult<O> outOids = _buildResultsFromOids(userContext,
                                                      tupleResult);
    return outOids;
}
项目:linq    文件:JpaUtil.java   
@SuppressWarnings("rawtypes")
private static Object getValue(String propertyName, Object obj) {
    if (obj instanceof Map) {
          return ((Map) obj).get(propertyName);
       } else if (obj instanceof Tuple) {
           return ((Tuple) obj).get(propertyName);
       } else if (obj != null) {
           PropertyDescriptor pd = BeanUtils.getPropertyDescriptor(obj.getClass(), propertyName);
           try {
              return pd.getReadMethod().invoke(obj, new Object[]{});
           } catch (Exception e) {
               e.printStackTrace();
           }
       }
    return null;
}
项目:linq    文件:LinqImpl.java   
@SuppressWarnings("rawtypes")
public LinqImpl(Class<?> domainClass, Class<?> resultClass, EntityManager entityManager) {
    super(domainClass, entityManager);
    if (Tuple.class.isAssignableFrom(resultClass)) {
        criteria = cb.createTupleQuery();
        root = criteria.from(domainClass);
    } else if (Map.class.isAssignableFrom(resultClass)) {
        criteria = cb.createQuery(Object[].class);
        root = criteria.from(domainClass);
        resultTransformer = Transformers.ALIAS_TO_MAP;
        Set<?> attrs = em.getMetamodel().entity(domainClass).getDeclaredSingularAttributes();
        String[] selections = new String[attrs.size()];
        int i = 0;
        for (Object attr : attrs) {
            selections[i] = ((SingularAttribute)attr).getName();
            i++;
        }
        select(selections);
    } else {
        criteria = cb.createQuery(resultClass);
        root = criteria.from(domainClass);
    }
    this.resultClass = resultClass;
}
项目:stroom-query    文件:QueryServiceCriteriaImpl.java   
@Override
public Optional<SearchResponse> search(final ServiceUser user,
                                       final SearchRequest request){
    final String dataSourceUuid = request.getQuery().getDataSource().getUuid();

    try (final Session session = database.openSession()) {
        final CriteriaBuilder cb = session.getCriteriaBuilder();

        final CriteriaQuery<Tuple> cq = cb.createTupleQuery();
        final Root<T> root = cq.from(this.dtoClass);

        cq.multiselect(this.fields.stream()
                .map(f -> root.get(f.getName()))
                .collect(Collectors.toList()));

        final Predicate requestPredicate = getPredicate(cb, root, request.getQuery().getExpression());
        final Predicate dataSourcePredicate = cb.equal(root.get(QueryableEntity.DATA_SOURCE_UUID), dataSourceUuid);

        cq.where(cb.and(requestPredicate, dataSourcePredicate));
        final List<Tuple> tuples = session.createQuery(cq).getResultList();
        final SearchResponse searchResponse = projectResults(request, tuples);

        return Optional.of(searchResponse);
    }
}
项目:elrest-java    文件:JPAFilterImplTest.java   
@Test
public void testGroupBy() throws Exception {

    Instance e1 = new Instance();
    e1.setName("testName1");
    e1.setNumber(1);
    e1.setField("A");
    em.persist(e1);

    Instance e2 = new Instance();
    e2.setName("testName2");
    e2.setNumber(2);
    e2.setField("A");
    em.persist(e2);

    JpaELFilterImpl el = new JpaELFilterImpl(em, Instance.class, Tuple.class);
    el.groupBy(new String[]{"field"}, "sum(number)", new String[]{"field"});
    List r = el.getResultList(Integer.MAX_VALUE, 0);

    assertNotNull(r);
    assertEquals(1, r.size());
    assertEquals("A", ((Tuple) r.get(0)).get(0));
    assertEquals(3, ((Tuple) r.get(0)).get(1));
}
项目:oma-riista-web    文件:PublicHarvestSeasonFeature.java   
private Map<Long, Integer> fetchUsedQuotas() {
    final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    final CriteriaQuery<Tuple> query = builder.createTupleQuery();
    final Root<HarvestReport> root = query.from(HarvestReport.class);

    Join<Harvest, HarvestQuota> joinedQuotas = root.join(HarvestReport_.harvests).join(Harvest_.harvestQuota, JoinType.LEFT);
    Path<Long> quotaId = joinedQuotas.get(HarvestQuota_.id);

    Expression<Long> count = builder.count(root.get(HarvestReport_.id));

    Predicate onlyApproved = builder.equal(root.get(HarvestReport_.state), HarvestReport.State.APPROVED);
    Predicate quotaNotNull = builder.isNotNull(quotaId);

    CriteriaQuery<Tuple> q = query
            .multiselect(quotaId, count)
            .where(onlyApproved, quotaNotNull)
            .groupBy(quotaId);
    return map(entityManager.createQuery(q).getResultList());
}
项目:adeptj-modules    文件:EclipseLinkCrudRepository.java   
/**
 * {@inheritDoc}
 */
@Override
public <T extends BaseEntity> List<Tuple> findByTupleQuery(TupleQueryCriteria<T> criteria) {
    EntityManager em = this.emf.createEntityManager();
    try {
        CriteriaBuilder cb = em.getCriteriaBuilder();
        CriteriaQuery<Tuple> cq = cb.createTupleQuery();
        Root<T> root = cq.from(criteria.getEntity());
        return em.createQuery(cq.multiselect(criteria.getSelections()
                .stream()
                .map(root::get)
                .collect(Collectors.toList())
                .toArray(new Selection[LEN_ZERO]))
                .where(cb.and(JpaUtil.getPredicates(criteria.getCriteriaAttributes(), cb, root))))
                .getResultList();
    } catch (RuntimeException ex) {
        LOGGER.error(ex.getMessage(), ex);
        throw new PersistenceException(ex.getMessage(), ex);
    } finally {
        JpaUtil.closeEntityManager(em);
    }
}
项目:HibernateTips    文件:TestCriteriaTuples.java   
@Test
public void selectTuples() {
    log.info("... selectTuples ...");

    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Tuple> q = cb.createTupleQuery();
    Root<Author> author = q.from(Author.class);
    q.multiselect(author.get(Author_.firstName).alias("firstName"), 
                    author.get(Author_.lastName).alias("lastName"));

    TypedQuery<Tuple> query = em.createQuery(q);
    List<Tuple> authorNames = query.getResultList();

    for (Tuple authorName : authorNames) {
        log.info(authorName.get("firstName") + " "
                + authorName.get("lastName"));
    }

    em.getTransaction().commit();
    em.close();
}
项目:HibernateTips    文件:TestCriteriaFunction.java   
@Test
public void callSizeFunction() {
    log.info("... callSizeFunction ...");

    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Tuple> cq = cb.createTupleQuery();
    Root<Author> root = cq.from(Author.class);
    cq.multiselect(root, cb.size(root.get(Author_.books)));
    cq.groupBy(root.get(Author_.id));

    TypedQuery<Tuple> q = em.createQuery(cq);
    List<Tuple> results = q.getResultList();

    for (Tuple r :  results) {
        log.info(r.get(0) + " wrote " +  r.get(1) + " books.");
    }

    em.getTransaction().commit();
    em.close();
}
项目:HibernateTips    文件:TestMetamodel.java   
@Test
public void getBooks() {
    log.info("... getBooks ...");

    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Tuple> cq = cb.createTupleQuery();
    Root<Book> root = cq.from(Book.class);
    cq.multiselect(root.get(Book_.title), root.get(Book_.publishingDate));

    List<Tuple> results = em.createQuery(cq).getResultList();

    for (Tuple r : results) {
        log.info(r.get(0) + " was published on " + r.get(1));
    }

    em.getTransaction().commit();
    em.close();
}
项目:jpasecurity    文件:SecureQuery.java   
private <R> R getSecureResult(R result) {
    if (result == null) {
        return null;
    }
    if (isSimplePropertyType(result.getClass())) {
        return result;
    }
    if (result instanceof Tuple) {
        return (R)new SecureTuple((Tuple)result);
    }
    if (!(result instanceof Object[])) {
        return result;
    }
    Object[] scalarResult = (Object[])result;
    List<Object> entitiesToIgnore = new ArrayList<Object>();
    for (int i = 0; i < scalarResult.length; i++) {
        if (scalarResult[i] != null && !isSimplePropertyType(scalarResult[i].getClass())) {
            entitiesToIgnore.add(scalarResult[i]);
        }
    }
    DefaultAccessManager.Instance.get().ignoreChecks(AccessType.READ, entitiesToIgnore);
    return (R)scalarResult;
}
项目:springJpaKata    文件:JpaCriteriaTest.java   
@Test
public void shouldUseTuple(){

            String searchName = "borowiec2";
            CriteriaBuilder cb = em.getCriteriaBuilder();
            //CriteriaQuery<Object[]> c = cb.createQuery(Object[].class); //<4>
            CriteriaQuery<Tuple> criteria = cb.createQuery(Tuple.class); //<1>
            Root<Person> root = criteria.from(Person.class);//<2>
            ParameterExpression<String> lastNameParameter = cb.parameter(String.class,"lastName");
            criteria.multiselect(root.get("firstName"), root.get("version")).where(cb.equal(root.get("lastName"),lastNameParameter));

            List<Tuple> tupleResult = em.createQuery(criteria).setParameter("lastName", searchName).getResultList();//<3>
            for (Tuple t : tupleResult) {
               log.info("fistName : {} , version : {} ",t.get(0),t.get(1));
            }
            Assertions.assertThat(tupleResult.size()).isEqualTo(1);
}
项目:opencucina    文件:WorkflowRepositorySupport.java   
/**
 * JAVADOC Method Level Comments
 *
 * @param input JAVADOC.
 *
 * @return JAVADOC.
 */
protected Collection<ProcessToken> populate(Collection<Tuple> input) {
    Collection<ProcessToken> result = new ArrayList<ProcessToken>();

    for (Tuple tuple : input) {
        ProcessToken wt = (ProcessToken) tuple.get(0);
        PersistableEntity pe = (PersistableEntity) tuple.get(1);

        Assert.notNull(wt, "token should not be null");
        Assert.notNull(pe, "domain should not be null");
        wt.setDomainObject(pe);
        result.add(wt);
    }

    return result;
}
项目:opencucina    文件:ProcessTokenRepositoryImpl.java   
/**
 * JAVADOC Method Level Comments
 *
 * @param wfid JAVADOC.
 *
 * @return JAVADOC.
 */
@Override
public Collection<ProcessToken> findByProcessDefinitionId(String wfid) {
    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    CriteriaQuery<Tuple> tcq = cb.createTupleQuery();
    Root<ProcessToken> rt = tcq.from(ProcessToken.class);
    Predicate tokp = cb.equal(rt.get("processDefinitionId"), wfid);
    Path<Object> pid = rt.get("domainObjectId");

    Root<EntityDescriptor> rc = tcq.from(EntityDescriptor.class);
    Predicate clap = cb.equal(pid, rc.get("localId"));

    tcq.multiselect(rt, rc).where(cb.and(clap, tokp));

    Collection<Tuple> results = entityManager.createQuery(tcq).getResultList();

    if ((results == null) || (results.size() == 0)) {
        LOG.warn("Failed to find workflow instances for the workflowId:" + wfid);

        return Collections.emptyList();
    }

    return populate(results);
}
项目:darceo    文件:DataFileDaoBean.java   
@Override
public Map<Long, Long> countAllGroupByOwner() {
    CriteriaQuery<Tuple> query = criteriaBuilder.createTupleQuery();
    Root<DataFile> root = query.from(clazz);
    Join<DataFile, DataFileVersion> joinFileVersions = root.join(DataFile_.includedIn);
    Join<DataFileVersion, ContentVersion> joinVersion = joinFileVersions.join(DataFileVersion_.contentVersion);
    Join<ContentVersion, DigitalObject> joinObject = joinVersion.join(ContentVersion_.object);

    query.groupBy(joinObject.get(DigitalObject_.ownerId));
    query.multiselect(joinObject.get(DigitalObject_.ownerId), criteriaBuilder.countDistinct(root));

    Map<Long, Long> results = new HashMap<Long, Long>();
    for (Tuple tuple : entityManager.createQuery(query).getResultList()) {
        results.put((Long) tuple.get(0), (Long) tuple.get(1));
    }

    return results;
}
项目:darceo    文件:DataFileDaoBean.java   
@Override
public Map<Long, Long> getSizeGroupByOwner() {
    CriteriaQuery<Tuple> query = criteriaBuilder.createTupleQuery();
    Root<DataFile> root = query.from(clazz);
    Root<DigitalObject> objectRoot = query.from(DigitalObject.class);

    Subquery<DataFileVersion> subquery = query.subquery(DataFileVersion.class);
    Root<DataFileVersion> subqueryRoot = subquery.from(DataFileVersion.class);
    Join<DataFileVersion, ContentVersion> joinVersion = subqueryRoot.join(DataFileVersion_.contentVersion);
    Join<ContentVersion, DigitalObject> joinObject = joinVersion.join(ContentVersion_.object);
    subquery.where(criteriaBuilder.and(criteriaBuilder.equal(joinObject, objectRoot),
        criteriaBuilder.equal(root, subqueryRoot.get(DataFileVersion_.dataFile))));
    subquery.select(subqueryRoot);

    query.where(criteriaBuilder.exists(subquery));
    query.groupBy(objectRoot.get(DigitalObject_.ownerId));
    query.multiselect(objectRoot.get(DigitalObject_.ownerId), criteriaBuilder.sum(root.get(DataFile_.size)));

    Map<Long, Long> results = new HashMap<Long, Long>();
    for (Tuple tuple : entityManager.createQuery(query).getResultList()) {
        results.put((Long) tuple.get(0), (Long) tuple.get(1));
    }

    return results;
}
项目:darceo    文件:MetadataFileDaoBean.java   
@Override
public Map<Long, Long> countAllGroupByOwner() {
    CriteriaQuery<Tuple> query = criteriaBuilder.createTupleQuery();
    Root<T> root = query.from(clazz);
    Join<?, ContentVersion> joinVersion = joinVersions(root);
    Join<ContentVersion, DigitalObject> joinObject = joinVersion.join(ContentVersion_.object);

    query.groupBy(joinObject.get(DigitalObject_.ownerId));
    query.multiselect(joinObject.get(DigitalObject_.ownerId), criteriaBuilder.countDistinct(root));

    Map<Long, Long> results = new HashMap<Long, Long>();
    for (Tuple tuple : entityManager.createQuery(query).getResultList()) {
        results.put((Long) tuple.get(0), (Long) tuple.get(1));
    }

    return results;
}
项目:darceo    文件:MetadataFileDaoBean.java   
@Override
public Map<Long, Long> getSizeGroupByOwner() {
    CriteriaQuery<Tuple> query = criteriaBuilder.createTupleQuery();
    Root<T> root = query.from(clazz);
    Root<DigitalObject> objectRoot = query.from(DigitalObject.class);

    Subquery<T> subquery = query.subquery(clazz);
    Root<T> subqueryRoot = subquery.from(clazz);
    Join<?, ContentVersion> joinVersion = joinVersions(subqueryRoot);
    Join<ContentVersion, DigitalObject> joinObject = joinVersion.join(ContentVersion_.object);
    subquery.where(criteriaBuilder.and(criteriaBuilder.equal(joinObject, objectRoot),
        criteriaBuilder.equal(root, subqueryRoot)));
    subquery.select(subqueryRoot);

    query.where(criteriaBuilder.exists(subquery));
    query.groupBy(objectRoot.get(DigitalObject_.ownerId));
    query.multiselect(objectRoot.get(DigitalObject_.ownerId), criteriaBuilder.sum(root.get(MetadataFile_.size)));

    Map<Long, Long> results = new HashMap<Long, Long>();
    for (Tuple tuple : entityManager.createQuery(query).getResultList()) {
        results.put((Long) tuple.get(0), (Long) tuple.get(1));
    }

    return results;
}
项目:darceo    文件:MetadataNamespaceDaoBean.java   
/**
 * Returns a map containing metadata formats and the number of metadata files using them.
 * 
 * Only the formats that have a non-zero metadata file count are included in the map.
 * 
 * @param types
 *            the types of metadata files to be taken into account
 * @return a <format type, number of metadata files using it> map
 */
protected Map<NamespaceType, Long> getCounts(Collection<MetadataType> types) {
    CriteriaQuery<Tuple> query = criteriaBuilder.createTupleQuery();
    Root<MetadataFile> root = query.from(MetadataFile.class);
    Join<MetadataFile, MetadataNamespace> joinNamespace = root.join(MetadataFile_.usedNamespaces);

    query.where(root.get(MetadataFile_.type).in(types));

    query.groupBy(joinNamespace.get(MetadataNamespace_.type));

    query.multiselect(joinNamespace.get(MetadataNamespace_.type), criteriaBuilder.count(root));

    Map<NamespaceType, Long> results = new TreeMap<NamespaceType, Long>();
    for (Tuple tuple : entityManager.createQuery(query).getResultList()) {
        results.put((NamespaceType) tuple.get(0), (Long) tuple.get(1));
    }

    return results;
}
项目:herd    文件:AbstractNotificationRegistrationDao.java   
/**
 * Gets a list of notification registration keys from the list of tuples that contain notification registration name and namespace columns.
 *
 * @param tuples the list tof tuples that contain notification registration name and namespace columns
 * @param notificationRegistrationNamespaceColumn the column that contains the namespace of the notification registration
 * @param notificationRegistrationNameColumn the column that contains the name of the notification registration
 *
 * @return the list of notification registration keys
 */
protected List<NotificationRegistrationKey> getNotificationRegistrationKeys(List<Tuple> tuples, Path<String> notificationRegistrationNamespaceColumn,
    Path<String> notificationRegistrationNameColumn)
{
    List<NotificationRegistrationKey> notificationRegistrationKeys = new ArrayList<>();

    // Populate the "keys" objects from the returned tuples (i.e. 1 tuple for each row).
    for (Tuple tuple : tuples)
    {
        NotificationRegistrationKey notificationRegistrationKey = new NotificationRegistrationKey();
        notificationRegistrationKeys.add(notificationRegistrationKey);
        notificationRegistrationKey.setNamespace(tuple.get(notificationRegistrationNamespaceColumn));
        notificationRegistrationKey.setNotificationName(tuple.get(notificationRegistrationNameColumn));
    }

    return notificationRegistrationKeys;
}
项目:JpaQueries    文件:ProductServiceWithCriteria.java   
public Map<Customer, Double> sumPriceByPurchaseCustomer() {
    // Create "tuple" query for use with groupBy; otherwise, throws PersistenceException: Exception [EclipseLink-6051]
    CriteriaQuery<Tuple> query = em.getCriteriaBuilder().createTupleQuery();
    Root<Customer> from = query.from(Customer.class);
    ListJoin<Customer, Purchase> joinPurchase = from.join(Customer_.purchases);
    ListJoin<Purchase, Product> joinProduct = joinPurchase.join(Purchase_.products);
    query.multiselect(from.get(BaseModel_.id), em.getCriteriaBuilder().sum(joinProduct.get(Product_.price)));
    query.groupBy(from.get(BaseModel_.id));
    List<Tuple> results = em.createQuery(query).getResultList();

    Map<Customer, Double> ret = new HashMap<>();
    for (Tuple result : results) {
        Object[] arr = result.toArray();
        ret.put(customerService.findById((Long)arr[0]), ((Double)arr[1]));
    }
    return ret;
}
项目:JpaQueries    文件:ProductServiceWithCriteriaString.java   
public Map<Customer, Double> sumPriceByPurchaseCustomer() {
    // Create "tuple" query for use with groupBy; otherwise, throws PersistenceException: Exception [EclipseLink-6051]
    CriteriaQuery<Tuple> query = em.getCriteriaBuilder().createTupleQuery();
    Root<Customer> from = query.from(Customer.class);
    Join<Customer, Purchase> joinPurchase = from.join("purchases");
    Join<Purchase, Product> joinProduct = joinPurchase.join("products");
    query.multiselect(from.get("id"), em.getCriteriaBuilder().sum(joinProduct.get("price").as(Double.class)));
    query.groupBy(from.get("id"));
    List<Tuple> results = em.createQuery(query).getResultList();

    Map<Customer, Double> ret = new HashMap<>();
    for (Tuple result : results) {
        Object[] arr = result.toArray();
        ret.put(customerService.findById((Long)arr[0]), ((Double)arr[1]));
    }
    return ret;
}
项目:zstack    文件:VmCascadeExtension.java   
@Transactional(readOnly = true)
private List<DetachNicFromVmMsg> getVmNicDetachMsgs(List<L2NetworkDetachStruct> structs) {
    List<DetachNicFromVmMsg> dmsgs  = new ArrayList<>();

    for (L2NetworkDetachStruct s : structs) {
        String sql = "select vm.uuid, nic.uuid from VmInstanceVO vm, VmNicVO nic, L3NetworkVO l3"
                + " where vm.clusterUuid = :clusterUuid"
                + " and l3.l2NetworkUuid = :l2NetworkUuid"
                + " and nic.l3NetworkUuid = l3.uuid "
                + " and nic.vmInstanceUuid = vm.uuid";
        TypedQuery<Tuple> q = dbf.getEntityManager().createQuery(sql, Tuple.class);
        q.setParameter("clusterUuid", s.getClusterUuid());
        q.setParameter("l2NetworkUuid", s.getL2NetworkUuid());
        dmsgs.addAll(q.getResultList().stream().map((t) -> {
            DetachNicFromVmMsg msg = new DetachNicFromVmMsg();
            msg.setVmInstanceUuid(t.get(0, String.class));
            msg.setVmNicUuid(t.get(1, String.class));
            bus.makeTargetServiceIdByResourceUuid(msg, VmInstanceConstant.SERVICE_ID, msg.getVmInstanceUuid());
            return msg;
        }).collect(Collectors.toList()));
    }

    return dmsgs;
}
项目:zstack    文件:VmInstanceApiInterceptor.java   
@Transactional(readOnly = true)
private void validate(APIDetachL3NetworkFromVmMsg msg) {
    String sql = "select vm.uuid, vm.type, vm.state from VmInstanceVO vm, VmNicVO nic where vm.uuid = nic.vmInstanceUuid and nic.uuid = :uuid";
    TypedQuery<Tuple> q = dbf.getEntityManager().createQuery(sql, Tuple.class);
    q.setParameter("uuid", msg.getVmNicUuid());
    Tuple t = q.getSingleResult();
    String vmUuid = t.get(0, String.class);
    String vmType = t.get(1, String.class);
    VmInstanceState state = t.get(2, VmInstanceState.class);

    if (!VmInstanceState.Running.equals(state) && !VmInstanceState.Stopped.equals(state)) {
        throw new ApiMessageInterceptionException(operr("unable to detach a L3 network. The vm[uuid: %s] is not Running or Stopped; the current state is %s",
                        msg.getVmInstanceUuid(), state));
    }

    msg.setVmInstanceUuid(vmUuid);
}
项目:zstack    文件:VmQuotaUtil.java   
@Transactional(readOnly = true)
public long getUsedDataVolumeCount(String accountUuid) {
    String sql = "select count(vol)" +
            " from VolumeVO vol, AccountResourceRefVO ref " +
            " where vol.type = :vtype" +
            " and ref.resourceUuid = vol.uuid " +
            " and ref.accountUuid = :auuid" +
            " and ref.resourceType = :rtype" +
            " and vol.status != :status ";
    TypedQuery<Tuple> volq = dbf.getEntityManager().createQuery(sql, Tuple.class);
    volq.setParameter("auuid", accountUuid);
    volq.setParameter("rtype", VolumeVO.class.getSimpleName());
    volq.setParameter("vtype", VolumeType.Data);
    volq.setParameter("status", VolumeStatus.Deleted);
    Long n = volq.getSingleResult().get(0, Long.class);
    n = n == null ? 0 : n;
    return n;
}
项目:zstack    文件:HostCapacityReserveManagerImpl.java   
private void findReservedCapacityByHypervisorType() {
    SimpleQuery<HostVO> hq = dbf.createQuery(HostVO.class);
    hq.select(HostVO_.uuid, HostVO_.hypervisorType);
    hq.add(HostVO_.uuid, Op.IN, hostUuids);
    hq.add(HostVO_.state,Op.EQ, HostState.Enabled);
    hq.add(HostVO_.status,Op.EQ, HostStatus.Connected);
    List<Tuple> tuples = hq.listTuple();

    for (Tuple t : tuples) {
        String huuid = t.get(0, String.class);
        String hvType = t.get(1, String.class);

        HostReservedCapacityExtensionPoint ext = exts.get(hvType);
        if (ext == null) {
            continue;
        }

        ReservedHostCapacity hc = result.get(huuid);
        if (hc.getReservedMemoryCapacity() == -1) {
            hc.setReservedMemoryCapacity(ext.getReservedHostCapacity().getReservedMemoryCapacity());
        }
        if (hc.getReservedCpuCapacity() == -1) {
            hc.setReservedCpuCapacity(ext.getReservedHostCapacity().getReservedCpuCapacity());
        }
    }
}
项目:zstack    文件:BridgeNameFinder.java   
@Transactional(readOnly = true)
public Map<String, String> findByL3Uuids(Collection<String> l3Uuids) {
    String sql = "select t.tag, l3.uuid" +
            " from SystemTagVO t, L3NetworkVO l3" +
            " where t.resourceType = :ttype" +
            " and t.tag like :tag" +
            " and t.resourceUuid = l3.l2NetworkUuid" +
            " and l3.uuid in (:l3Uuids)" +
            " group by l3.uuid";
    TypedQuery<Tuple> tq = dbf.getEntityManager().createQuery(sql, Tuple.class);
    tq.setParameter("tag", TagUtils.tagPatternToSqlPattern(KVMSystemTags.L2_BRIDGE_NAME.getTagFormat()));
    tq.setParameter("l3Uuids", l3Uuids);
    tq.setParameter("ttype", L2NetworkVO.class.getSimpleName());
    List<Tuple> ts = tq.getResultList();

    Map<String, String> bridgeNames = new HashMap<>();
    for (Tuple t : ts) {
        String brToken = t.get(0, String.class);
        String l3Uuid = t.get(1, String.class);
        bridgeNames.put(l3Uuid, KVMSystemTags.L2_BRIDGE_NAME.getTokenByTag(brToken, KVMSystemTags.L2_BRIDGE_NAME_TOKEN));
    }

    return bridgeNames;
}
项目:zstack    文件:FlatEipBackend.java   
@Transactional
private Map<String, String> getPublicL3BridgeNamesByVipUuids(List<String> vipsUuids) {
    String sql = "select l3.uuid, vip.uuid from L3NetworkVO l3, VipVO vip where vip.l3NetworkUuid = l3.uuid and vip.uuid in (:uuids)";
    TypedQuery<Tuple> q = dbf.getEntityManager().createQuery(sql, Tuple.class);
    q.setParameter("uuids", vipsUuids);
    List<Tuple> ts = q.getResultList();
    Map<String, String> vipL3 = new HashMap<String, String>();
    for (Tuple t : ts) {
        String l3Uuid = t.get(0, String.class);
        String vipUuid = t.get(1, String.class);
        vipL3.put(vipUuid, l3Uuid);
    }

    DebugUtils.Assert(!vipL3.isEmpty(), "how can we get an empty public L3Network list?");

    Map<String, String> brNames = new BridgeNameFinder().findByL3Uuids(vipL3.values());
    Map<String, String> vipBr = new HashMap<String, String>();
    for (Map.Entry<String, String> e : vipL3.entrySet()) {
        vipBr.put(e.getKey(), brNames.get(e.getValue()));
    }
    return vipBr;
}
项目:zstack    文件:PortForwardingManagerImpl.java   
@Override
public RangeSet getVipUsePortRange(String vipUuid, String protocol, VipUseForList useForList){
    RangeSet portRangeList = new RangeSet();
    List<RangeSet.Range> portRanges = new ArrayList<RangeSet.Range>();

    if (protocol.toUpperCase().equals(PortForwardingProtocolType.UDP.toString()) || protocol.toUpperCase().equals(PortForwardingProtocolType.TCP.toString())) {
        List<Tuple> pfPortList = Q.New(PortForwardingRuleVO.class).select(PortForwardingRuleVO_.vipPortStart, PortForwardingRuleVO_.vipPortEnd)
                .eq(PortForwardingRuleVO_.vipUuid, vipUuid).eq(PortForwardingRuleVO_.protocolType, PortForwardingProtocolType.valueOf(protocol.toUpperCase())).listTuple();
        Iterator<Tuple> it = pfPortList.iterator();
        while (it.hasNext()){
            Tuple strRange = it.next();
            int start = strRange.get(0, Integer.class);
            int end = strRange.get(1, Integer.class);

            RangeSet.Range range = new RangeSet.Range(start, end);
            portRanges.add(range);
        }
    }

    portRangeList.setRanges(portRanges);
    return portRangeList;
}
项目:zstack    文件:SystemTag.java   
public Map<String, List<String>> getTags(List<String> resourceUuids, Class resourceClass) {
    SimpleQuery<SystemTagVO> q = dbf.createQuery(SystemTagVO.class);
    q.select(SystemTagVO_.tag, SystemTagVO_.resourceUuid);
    q.add(SystemTagVO_.resourceType, Op.EQ, resourceClass.getSimpleName());
    q.add(SystemTagVO_.resourceUuid, Op.IN, resourceUuids);
    q.add(SystemTagVO_.tag, useOp(), useTagFormat());
    List<Tuple> ts = q.listTuple();
    Map<String, List<String>> ret = new HashMap<>();
    for (Tuple t : ts) {
        String uuid = t.get(1, String.class);
        List<String> tags = ret.get(uuid);
        if (tags == null) {
            tags = new ArrayList<>();
            ret.put(uuid, tags);
        }
        tags.add(t.get(0, String.class));
    }
    return ret;
}
项目:zstack    文件:ImageCascadeExtension.java   
@Transactional(readOnly = true)
private List<ImageDeletionStruct> getImageOnBackupStorage(List<String> bsUuids) {
    String sql = "select ref.backupStorageUuid, img from ImageVO img, ImageBackupStorageRefVO ref where img.uuid = ref.imageUuid and ref.backupStorageUuid in (:bsUuids) group by img.uuid";
    TypedQuery<Tuple> q = dbf.getEntityManager().createQuery(sql, Tuple.class);
    q.setParameter("bsUuids", bsUuids);
    List<Tuple> ts = q.getResultList();

    Map<String, ImageDeletionStruct> tmp = new HashMap<String, ImageDeletionStruct>();
    for (Tuple t : ts) {
        String bsUuid = t.get(0, String.class);
        ImageVO img = t.get(1, ImageVO.class);
        ImageDeletionStruct struct = tmp.get(img.getUuid());
        if (struct == null) {
            struct = new ImageDeletionStruct();
            struct.setImage(ImageInventory.valueOf(img));
            struct.setBackupStorageUuids(new ArrayList<String>());
            tmp.put(img.getUuid(), struct);
        }
        struct.getBackupStorageUuids().add(bsUuid);
    }

    List<ImageDeletionStruct> structs = new ArrayList<ImageDeletionStruct>();
    structs.addAll(tmp.values());
    return structs;
}
项目:zstack    文件:SimpleQueryImpl.java   
@Transactional
Tuple _findTuple() {
    assert _selects.size() > 1 : String.format("findTuple() needs more than one parameter in Query.Select(), you have put %s parameter in Query.select(..), either correcting the parameter or using find() or findValue()", _selects.size());
    done();
    Tuple ret = null;
    try {
        Query q = _dbf.getEntityManager().createQuery(_query);
        if (limit != null) {
            q.setMaxResults(limit);
        }
        ret = (Tuple)q.getSingleResult();
    } catch (NoResultException e) {
    } catch (EmptyResultDataAccessException e) {
    }
    return ret;
}
项目:r01fb    文件:DBFindForModelObjectBase.java   
@Override
public FindOIDsResult<O> findByCreateDate(final UserContext userContext,
                                          final Range<Date> createDate) {
    CriteriaBuilder builder = _entityManager.getCriteriaBuilder();

    // use projections to return ONLY the oid (see http://stackoverflow.com/questions/12618489/jpa-criteria-api-select-only-specific-columns)
    CriteriaQuery<Tuple> query = builder.createTupleQuery();
    Root<DB> root = query.from(_DBEntityType);
    if (Facetables.hasFacet(_modelObjectType,HasVersionableFacet.class)) {
        query.multiselect(root.get("_oid"),
                          root.get("_version"));
    } else {
        query.multiselect(root.get("_oid"));
    }
    Predicate where = _buildDateRangePredicate(builder,root,"_createDate",
                                               createDate);
    if (where != null) query.where(where);
    List<Tuple> tupleResult = _entityManager.createQuery(query)
                                                    .setHint(QueryHints.READ_ONLY,HintValues.TRUE)
                                            .getResultList();
    FindOIDsResult<O> outOids = _buildResultsFromOids(userContext,
                                                      tupleResult);
    return outOids;
}
项目:r01fb    文件:DBFindForModelObjectBase.java   
@Override
public FindOIDsResult<O> findByLastUpdateDate(final UserContext userContext,
                                              final Range<Date> lastUpdateDate) {
    CriteriaBuilder builder = _entityManager.getCriteriaBuilder();

    // use projections to return ONLY the oid (see http://stackoverflow.com/questions/12618489/jpa-criteria-api-select-only-specific-columns)
    CriteriaQuery<Tuple> query = builder.createTupleQuery();
    Root<DB> root = query.from(_DBEntityType);
    if (Facetables.hasFacet(_modelObjectType,HasVersionableFacet.class)) {
        query.multiselect(root.get("_oid"),
                          root.get("_version"));
    } else {
        query.multiselect(root.get("_oid"));
    }
    Predicate where = _buildDateRangePredicate(builder,root,"_lastUpdateDate",
                                               lastUpdateDate);
    if (where != null) query.where(where);
    List<Tuple> tupleResult = _entityManager.createQuery(query)
                                                    .setHint(QueryHints.READ_ONLY,HintValues.TRUE)
                                            .getResultList();
    FindOIDsResult<O> outOids = _buildResultsFromOids(userContext,
                                                      tupleResult);
    return outOids;
}
项目:r01fb    文件:DBFindForModelObjectBase.java   
@Override
public FindOIDsResult<O> findByCreator(final UserContext userContext,
                                       final UserCode creatorUserCode) {
    CriteriaBuilder builder = _entityManager.getCriteriaBuilder();

    // use projections to return ONLY the oid (see http://stackoverflow.com/questions/12618489/jpa-criteria-api-select-only-specific-columns)
    CriteriaQuery<Tuple> query = builder.createTupleQuery();
    Root<DB> root = query.from(_DBEntityType);
    if (Facetables.hasFacet(_modelObjectType,HasVersionableFacet.class)) {
        query.multiselect(root.get("_oid"),
                          root.get("_version"));
    } else {
        query.multiselect(root.get("_oid"));
    }
    Predicate where = _buildUserPredicate(builder,root,"_creator",
                                          creatorUserCode);
    if (where != null) query.where(where);
    List<Tuple> tupleResult = _entityManager.createQuery(query)
                                                    .setHint(QueryHints.READ_ONLY,HintValues.TRUE)
                                            .getResultList();
    FindOIDsResult<O> outOids = _buildResultsFromOids(userContext,
                                                      tupleResult);
    return outOids;
}
项目:r01fb    文件:DBFindForModelObjectBase.java   
@Override
public FindOIDsResult<O> findByLastUpdator(final UserContext userContext,
                                           final UserCode lastUpdatorUserCode) {
    CriteriaBuilder builder = _entityManager.getCriteriaBuilder();

    // use projections to return ONLY the oid (see http://stackoverflow.com/questions/12618489/jpa-criteria-api-select-only-specific-columns)
    CriteriaQuery<Tuple> query = builder.createTupleQuery();
    Root<DB> root = query.from(_DBEntityType);
    if (Facetables.hasFacet(_modelObjectType,HasVersionableFacet.class)) {
        query.multiselect(root.get("_oid"),
                          root.get("_version"));
    } else {
        query.multiselect(root.get("_oid"));
    }
    Predicate where = _buildUserPredicate(builder,root,"_lastUpdator",
                                          lastUpdatorUserCode);
    if (where != null) query.where(where);
    List<Tuple> tupleResult = _entityManager.createQuery(query)
                                                    .setHint(QueryHints.READ_ONLY,HintValues.TRUE)
                                            .getResultList();
    FindOIDsResult<O> outOids = _buildResultsFromOids(userContext,
                                                      tupleResult);
    return outOids;
}
项目:actionbazaar    文件:ItemManager.java   
public List<Tuple> getWinningBidTuple(Long itemId) {
   CriteriaBuilder builder = entityManager.getCriteriaBuilder();
   CriteriaQuery<Tuple> query = builder.createTupleQuery();
   Root<Item> itemRoot = query.from(Item.class);
   Root<Order> orderRoot = query.from(Order.class);
   Root<Bid> bidRoot = query.from(Bid.class);
   Root<BazaarAccount> userRoot = query.from(BazaarAccount.class);
   Join<Order,Bid> j1 = orderRoot.join(Order_.bid);
   Join<Order,Item> j2 = orderRoot.join(Order_.item);
   Join<Order,BazaarAccount> j3 = orderRoot.join(Order_.bidder);
   Path<Long> itemIdPath = itemRoot.get(Item_.itemId);
   Predicate itemPredicate = builder.equal(itemIdPath,itemId);
   query.multiselect( 
           userRoot.get( BazaarAccount_.username ), 
           bidRoot.get( Bid_.bidPrice ),
           itemRoot.get(Item_.itemName) ,
           itemRoot.get(Item_.description));
   TypedQuery<Tuple> q = entityManager.createQuery(query);
   query.where(itemPredicate); 

   List<Tuple> results = q.getResultList();
   for(Tuple result : results) {
       logger.log(Level.INFO, "Item: {0}", result.get(itemRoot.get(Item_.itemName)));
   }
   return q.getResultList();
}
项目:high-performance-java-persistence    文件:JPADTOProjectionTest.java   
@Test
public void testTuple() {
    doInJPA( entityManager -> {
        List<Tuple> postDTOs = entityManager.createQuery(
            "select " +
            "       p.id as id, " +
            "       p.title as title " +
            "from Post p " +
            "where p.createdOn > :fromTimestamp", Tuple.class)
        .setParameter( "fromTimestamp", Timestamp.from(
            LocalDateTime.of( 2016, 1, 1, 0, 0, 0 ).toInstant( ZoneOffset.UTC ) ))
        .getResultList();

        assertFalse( postDTOs.isEmpty() );

        Tuple postDTO = postDTOs.get( 0 );
        assertEquals( 1L, postDTO.get( "id" ) );
        assertEquals( "High-Performance Java Persistence", postDTO.get( "title" ) );
    } );
}
项目:high-performance-java-persistence    文件:JPADTOProjectionTest.java   
@Test
public void testTupleNativeQuery() {
    doInJPA( entityManager -> {

        List<Tuple> postDTOs = entityManager.createNativeQuery(
            "SELECT " +
            "       p.id AS id, " +
            "       p.title AS title " +
            "FROM Post p " +
            "WHERE p.created_on > :fromTimestamp", Tuple.class)
        .setParameter( "fromTimestamp", Timestamp.from(
            LocalDateTime.of( 2016, 1, 1, 0, 0, 0 ).toInstant( ZoneOffset.UTC ) ))
        .getResultList();

        assertFalse( postDTOs.isEmpty() );

        Tuple postDTO = postDTOs.get( 0 );
        assertEquals( 1L, ((Number) postDTO.get( "id" )).longValue() );
        assertEquals( "High-Performance Java Persistence", postDTO.get( "title" ) );
    } );
}
项目:high-performance-java-persistence    文件:SQLInjectionTest.java   
public List<Tuple> getTuples() {
    return doInJPA(entityManager -> {
        Class<Post> entityClass = Post.class;
        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<Tuple> query = cb.createTupleQuery();
        Root<?> root = query.from(entityClass);
        query.select(
            cb.tuple(
                root.get("id"),
                cb.function("now", Date.class)
            )
        );

        return entityManager.createQuery(query).getResultList();
    });
}