@Override public SelectQuery<Record> selectQuery() { return delegate.selectQuery(); }
@Override public <R extends Record> SelectQuery<R> selectQuery(TableLike<R> table) { return delegate.selectQuery(table); }
/** * Create Select statement * @param table to select from * @param fields optional fields and aggregates * @return select step */ public SelectQuery createSelectFrom(Table table, Field ... fields) { // get Postgres context DSLContext context = PostgresDSL.using(SQL_DIALECT); // create select query and optionally add specified fields SelectQuery<?> select = context.selectQuery(); if (fields.length > 0) select.addSelect(fields); // from table select.addFrom(table); return select; }
/** * Create Select statement * @param table to select from * @param fields optional fields and aggregates * @return select step */ public SelectQuery createSelectFrom(Table table, Field ... fields) { // get Postgres context DSLContext context = PostgresDSL.using(SQL_DIALECT); // create select query and optionally add specified fields SelectQuery<?> select = context.selectQuery(); if (fields.length > 0) select.addSelect(fields); // from table select.addFrom(table); return select; }
/** * Create Select statement * @param table to select from * @param fields optional fields and aggregates * @return select step */ public SelectQuery createSelectFrom(Table table, Field ... fields) { // get Postgres context DSLContext context = PostgresDSL.using(SQL_DIALECT); // create select query and optionally add specified fields SelectQuery<?> select = context.selectQuery(); if (fields.length > 0) select.addSelect(fields); // from table select.addFrom(table); return select; }
SelectQuery<R> select = create.selectQuery(table);
.and(PROJECT_MEMBER.STATE.eq(CommonStatesConstants.ACTIVE))); SelectQuery<Record> query = create().selectQuery(); query.addFrom(ACCOUNT); query.addJoin(PROJECT_MEMBER, PROJECT_MEMBER.PROJECT_ID.equal(ACCOUNT.ID));
SelectQuery<R> select = create.selectQuery(table);
/** * Perform an additional SELECT .. FOR UPDATE to check if the underlying * database record has been changed compared to this record. */ private final void checkIfChanged(TableField<R, ?>[] keys) { SelectQuery<R> select = create().selectQuery(getTable()); Tools.addConditions(select, this, keys); // [#1547] MS Access and SQLite doesn't support FOR UPDATE. CUBRID and SQL Server // can emulate it, though! if (!NO_SUPPORT_FOR_UPDATE.contains(create().configuration().dialect().family())) select.setForUpdate(true); R record = select.fetchOne(); if (record == null) throw new DataChangedException("Database record no longer exists"); for (Field<?> field : fields.fields.fields) { Object thisObject = original(field); Object thatObject = record.original(field); if (!StringUtils.equals(thisObject, thatObject)) throw new DataChangedException("Database record has been changed"); } }
/** * Perform an additional SELECT .. FOR UPDATE to check if the underlying * database record has been changed compared to this record. */ private final void checkIfChanged(TableField<R, ?>[] keys) { SelectQuery<R> select = create().selectQuery(getTable()); Utils.addConditions(select, this, keys); // [#1547] MS Access and SQLite doesn't support FOR UPDATE. CUBRID and SQL Server // can simulate it, though! if (!asList(SQLITE).contains(create().configuration().dialect().family())) { select.setForUpdate(true); } R record = select.fetchOne(); if (record == null) { throw new DataChangedException("Database record no longer exists"); } for (Field<?> field : fields.fields.fields) { Value<?> thisValue = getValue0(field); Value<?> thatValue = ((AbstractRecord) record).getValue0(field); Object thisObject = thisValue.getOriginal(); Object thatObject = thatValue.getOriginal(); if (!StringUtils.equals(thisObject, thatObject)) { throw new DataChangedException("Database record has been changed"); } } }
@Override public final void refresh(final Field<?>... refreshFields) { SelectQuery<Record> select = create().selectQuery(); select.addSelect(refreshFields); select.addFrom(getTable()); Tools.addConditions(select, this, getPrimaryKey().getFieldsArray()); if (select.execute() == 1) { final AbstractRecord source = (AbstractRecord) select.getResult().get(0); delegate(configuration(), (Record) this, REFRESH) .operate(new RecordOperation<Record, RuntimeException>() { @Override public Record operate(Record record) throws RuntimeException { setValues(refreshFields, source); return record; } }); } else { throw new NoDataFoundException("Exactly one row expected for refresh. Record does not exist in database."); } }
@Override public final void refresh(final Field<?>... f) { SelectQuery<Record> select = create().selectQuery(); select.addSelect(f); select.addFrom(getTable()); Utils.addConditions(select, this, getPrimaryKey().getFieldsArray()); if (select.execute() == 1) { final AbstractRecord source = (AbstractRecord) select.getResult().get(0); delegate(configuration(), (Record) this, REFRESH) .operate(new RecordOperation<Record, RuntimeException>() { @Override public Record operate(Record record) throws RuntimeException { setValues(f, source); return record; } }); } else { throw new InvalidResultException("Exactly one row expected for refresh. Record does not exist in database."); } }
@Override public List<? extends ProjectMember> getProjectMembersByIdentity(long projectId, Set<Identity> identities) { Condition allMembers = DSL.falseCondition(); for (Identity identity : identities) { allMembers = allMembers.or(PROJECT_MEMBER.EXTERNAL_ID.eq(identity.getExternalId()) .and(PROJECT_MEMBER.EXTERNAL_ID_TYPE.eq(identity.getExternalIdType())) .and(PROJECT_MEMBER.REMOVED.isNull()) .and(PROJECT_MEMBER.STATE.eq(CommonStatesConstants.ACTIVE)) .and(PROJECT_MEMBER.PROJECT_ID.eq(projectId))); } SelectQuery<Record> query = create().selectQuery(); query.addFrom(PROJECT_MEMBER); query.addConditions(allMembers); query.setDistinct(true); return query.fetchInto(PROJECT_MEMBER); }
protected Object listInternal(SchemaFactory schemaFactory, String type, Map<Object, Object> criteria, ListOptions options, Map<Table<?>, Condition> joins) { Class<?> clz = getClass(schemaFactory, type, criteria, true); if (clz == null) { return null; } /* Use core schema, parent may not be authorized */ type = getObjectManager().getSchemaFactory().getSchemaName(clz); Table<?> table = JooqUtils.getTableFromRecordClass(clz); Sort sort = options == null ? null : options.getSort(); Pagination pagination = options == null ? null : options.getPagination(); Include include = options == null ? null : options.getInclude(); if (table == null) return null; SelectQuery<?> query = create().selectQuery(); addSort(schemaFactory, type, sort, query); MultiTableMapper mapper = addTables(schemaFactory, query, type, table, criteria, include, pagination, joins); addJoins(query, joins); addConditions(schemaFactory, query, type, table, criteria); addLimit(schemaFactory, type, pagination, query); List<?> result = mapper == null ? query.fetch() : query.fetchInto(mapper); addCapabilities(result, schemaFactory.getSchema(clz)); processPaginationResult(result, pagination, mapper); return result; }
return (SelectQueryImpl<Record>) ctx.dsl.selectQuery(parseTableValueConstructor(ctx));
@SuppressWarnings("unchecked") @Override protected <T> List<T> getListByRelationshipMap(Object obj, MapRelationship rel) { Class<UpdatableRecord<?>> typeClass = JooqUtils.getRecordClass(schemaFactory, rel.getObjectType()); String mappingType = schemaFactory.getSchemaName(rel.getMappingType()); String fromType = schemaFactory.getSchemaName(rel.getObjectType()); TableField<?, Object> fieldFrom = JooqUtils.getTableField(getMetaDataManager(), fromType, ObjectMetaDataManager.ID_FIELD); TableField<?, Object> mappingTo = JooqUtils.getTableField(getMetaDataManager(), mappingType, rel.getOtherRelationship().getPropertyName()); TableField<?, Object> mappingOther = JooqUtils.getTableField(getMetaDataManager(), mappingType, rel.getPropertyName()); TableField<?, Object> mappingRemoved = JooqUtils.getTableField(getMetaDataManager(), mappingType, ObjectMetaDataManager.REMOVED_FIELD); Table<?> table = JooqUtils.getTable(schemaFactory, typeClass); Table<?> mapTable = JooqUtils.getTable(schemaFactory, rel.getMappingType()); SelectQuery<?> query = create().selectQuery(); query.addFrom(table); query.addSelect(table.fields()); query.addJoin(mapTable, fieldFrom.eq(mappingTo).and(mappingRemoved == null ? DSL.trueCondition() : mappingRemoved.isNull()).and( mappingOther.eq(ObjectUtils.getId(obj)))); return (List<T>) query.fetchInto(typeClass); }
private SelectQuery<Record> buildSelect(DSLContext tx, Set<ProcessDataInclude> includes) { SelectQuery<Record> query = tx.selectQuery(); query.addSelect(PROCESS_QUEUE.fields()); query.addFrom(PROCESS_QUEUE);