No Spring Boot 1.XX e 2.0.1 é importado a versão 4.1.4
No spring Boot 2.XX é importado a versão 4.2.1
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
Spring Boot 1.XX
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
Spring Boot 2.XX
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
mvn install
mvn generated-sources
No Spring Boot 2.XX somente:
mvn compile
STS.ini adicionar antes de -vmargs
-vm
C:/Program Files/Java/jdk1.8.0_171/bin/javaw.exe
Exemplo do arquivo STS.ini
-startup
plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.700.v20180518-1200
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
-vm
C:/Program Files/Java/jdk1.8.0_171/bin/javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
-Xms40m
-Dosgi.module.lock.timeout=10
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xmx1200m
-javaagent:C:\app\sts-bundle\sts-3.9.5.RELEASE\lombok.jar
Na versão 4.2.1
a classe QueryDslPredicateExecutor
foi alterada para QuerydslPredicateExecutor
org.springframework.data.querydsl.QueryDslPredicateExecutor
org.springframework.data.querydsl.QuerydslPredicateExecutor
Referencia https://www.logicbig.com/tutorials/spring-framework/spring-data/query-dsl-basic.html
import com.querydsl.core.types.dsl.BooleanExpression;
public class LoteCotacaoPredicate {
private static final QLoteCotacao rlc = QLoteCotacao.loteCotacao;
public static BooleanExpression byCodStatus(Integer codStatus) {
return rlc.tipoStatus.codTipoStatus.eq(codStatus);
}
}
@Repository
public interface LoteCotacaoRepository
extends CrudRepository<LoteCotacao, Long>, QuerydslPredicateExecutor<LoteCotacao> {
}
public class LoteCotacaoService{
@Autowired
private LoteCotacaoRepository loteCotacaoRepository;
@Override
public void buscar() {
Iterable<LoteCotacao> lotes = loteCotacaoRepository.findAll(LoteCotacaoPredicate.byCodStatus(2));
}
}
import com.querydsl.core.types.dsl.BooleanExpression;
public interface DespesaItemRepositoryCustom {
DespesaItem findDescItem(BooleanExpression predicate);
}
@Repository
@RequiredArgsConstructor
public class DespesaItemRepositoryImpl implements DespesaItemRepositoryCustom {
private static final QDespesaItem rdi = QDespesaItem.despesaItem;
private final EntityManager em;
@Override
public DespesaItem findDescItem(BooleanExpression predicate) {
JPAQuery<Void> query = new JPAQuery<>(em);
return query.select(Projections.fields(ReembDespesaItem.class,rdi.qtdItem))
.from(rdi)
.where(predicate)
.orderBy(rdi.codDespesaItem.desc())
.fetchFirst();
}
}
@Repository
public interface DespesaItemRepository extends CrudRepository<DespesaItem, Long>,
QuerydslPredicateExecutor<DespesaItem>, DespesaItemRepositoryCustom { }
@Service
public class DespesaServiceImpl {
private final DespesaItemRepository despesaItemRepository;
public void busca(){
DespesaItem itensPorNumItem = despesaItemRepository.findDescItem(DespesaItemPredicate.byNumItemAndCodDespesa(item.getNumItem(), item.getDespesa().getCodDespesa(),1));
}
}