use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.
the class UniqueNumbers method checkSequenceExists.
protected void checkSequenceExists(String domain) {
String seqName = getSequenceName(domain);
if (containsSequence(seqName))
return;
// Create sequence in separate transaction because it's name is cached and we want to be sure it is created
// regardless of possible errors in the invoking code
Transaction tx = persistence.createTransaction(getDataStore(domain));
try {
lock.readLock().unlock();
lock.writeLock().lock();
EntityManager em = persistence.getEntityManager(getDataStore(domain));
Query query = em.createNativeQuery(getSequenceSupport(domain).sequenceExistsSql(seqName));
List list = query.getResultList();
if (list.isEmpty()) {
query = em.createNativeQuery(getSequenceSupport(domain).createSequenceSql(seqName, 1, 1));
query.executeUpdate();
}
tx.commit();
existingSequences.add(seqName);
} finally {
lock.readLock().lock();
lock.writeLock().unlock();
tx.end();
}
}
use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.
the class DeletePolicyProcessor method getReference.
protected Entity getReference(Entity entity, MetaProperty property) {
if (PersistenceHelper.isLoaded(entity, property.getName()))
return entity.getValue(property.getName());
else {
Query query = entityManager.createQuery("select e." + property.getName() + " from " + entity.getMetaClass().getName() + " e where e." + primaryKeyName + " = ?1");
query.setParameter(1, entity.getId());
Object refEntity = query.getFirstResult();
return (Entity) refEntity;
}
}
use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.
the class DeletePolicyProcessor method cascade.
protected void cascade(String entityName, MetaProperty property) {
String template = property.getRange().getCardinality().isMany() ? "select e from %s e join e.%s c where c." + primaryKeyName + " = ?1" : "select e from %s e where e.%s." + primaryKeyName + " = ?1";
String qstr = String.format(template, entityName, property.getName());
Query query = entityManager.createQuery(qstr);
query.setParameter(1, entity.getId());
List<Entity> list = query.getResultList();
for (Entity e : list) {
entityManager.remove(e);
}
}
use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.
the class DeletePolicyProcessor method isCollectionEmpty.
protected boolean isCollectionEmpty(MetaProperty property) {
MetaProperty inverseProperty = property.getInverse();
if (inverseProperty == null) {
log.warn("Inverse property not found for property {}", property);
Collection<Entity> value = entity.getValue(property.getName());
return value == null || value.isEmpty();
}
String invPropName = inverseProperty.getName();
String collectionPkName = metadata.getTools().getPrimaryKeyName(property.getRange().asClass());
String qlStr = "select e." + collectionPkName + " from " + property.getRange().asClass().getName() + " e where e." + invPropName + "." + primaryKeyName + " = ?1";
Query query = entityManager.createQuery(qlStr);
query.setParameter(1, entity.getId());
query.setMaxResults(1);
List<Entity> list = query.getResultList();
return list.isEmpty();
}
use of com.haulmont.cuba.core.Query in project cuba by cuba-platform.
the class SchedulingServiceBean method getAvailableUsers.
@Override
public List<String> getAvailableUsers() {
List<String> result = new ArrayList<>();
Transaction tx = persistence.createTransaction();
try {
EntityManager em = persistence.getEntityManager();
Query query = em.createQuery("select u from sec$User u");
List<User> userList = query.getResultList();
for (User user : userList) {
result.add(user.getLogin());
}
tx.commit();
} finally {
tx.end();
}
return result;
}
Aggregations