Querydsl-线程“主”中的异常java.lang.IllegalArgumentException:未提供任何源

Loa*_*Loa 5 java spring hibernate jpa querydsl

我正在使用Spring MVC,Thymeleaf,JPA(休眠)和Querydsl构建系统。在测试所有内容时,我遇到了此异常:

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Serviço nulo: false
[SER_USU] - Fazendo consulta...
[SER_USU] - Dao nulo: false

Exception in thread "main" java.lang.IllegalArgumentException: No sources given
    at com.querydsl.jpa.JPAQueryBase.serialize(JPAQueryBase.java:56)
    at com.querydsl.jpa.JPAQueryBase.serialize(JPAQueryBase.java:50)
    at com.querydsl.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:98)
    at com.querydsl.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:94)
    at com.querydsl.jpa.impl.AbstractJPAQuery.fetch(AbstractJPAQuery.java:201)
    at com.regra7.st.db.dao.Dao_Usuario.getPorID(Dao_Usuario.java:35)
    at com.regra7.st.servico.Ser_Usuario.cadastrar(Ser_Usuario.java:46)
    at com.regra7.st.testes.TesteDAO_001.<init>(TesteDAO_001.java:43)
    at com.regra7.st.testes.TesteDAO_001.main(TesteDAO_001.java:19)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不是很具描述性,因此,我不知道该怎么办。我已经尝试了所有方法,但是找不到解决方案。是的,那就是所有消息(堆栈跟踪)。这是我正在使用的一些文件...

pom.xml(我可能有一些依赖关系错误,我不清楚):

<project 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.regra7</groupId>
    <artifactId>Sistema_Teste_001</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>

            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

            <!-- QUERYDSL -->
            <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>

        </plugins>
    </build>
    <dependencies>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.5</version>
        </dependency>

        <!-- SPRING MVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.5.RELEASE</version>
        </dependency>

        <!-- SPRING CONTEXT (SPRING CORE - TRANSIENT) -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.5.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>4.3.5.RELEASE</version>
        </dependency>

        <!-- POSTGRESQL DRIVER JDBC -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.3-1102-jdbc41</version>
        </dependency>

        <!-- API SERVLET E JSP -->
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>

        <!-- BEAN VALIDATION -->
        <!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.6.Final</version>
        </dependency>

        <!-- IMPLEMENTAÇÃO BEAN VALIDATION (HIBERNATE) -->
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.3.4.Final</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api -->
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.0.Final</version>
        </dependency>

        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
            <version>2.2.4</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>javax.el</artifactId>
            <version>2.2.4</version>
        </dependency>

        <!-- THYMELEAF -->
        <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf</artifactId>
            <version>3.0.3.RELEASE</version>
        </dependency>

        <!-- THYMELEAF PARA O SPRING 4 -->
        <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring4 -->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring4</artifactId>
            <version>3.0.3.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-core -->
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-core</artifactId>
            <version>4.1.4</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-jpa -->
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-jpa</artifactId>
            <version>4.1.4</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.querydsl/querydsl-apt -->
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
            <version>4.1.4</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.1</version>
        </dependency>

        <!-- C3P0 -->
        <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
        </dependency>

    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

spring-config.xml(app-context.xml):

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!-- ARQUIVO DE CONFIGURAÇÃO DE CONTEXTO DE APLICAÇÃO. -->
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd ">

    <!-- Mapeamento de recursos (arquivos css, fontes, imagens, dentre outros). -->
    <!-- <mvc:resources mapping="/css/**" location="/WEB-INF/recursos/css/" /> -->
    <!-- <mvc:resources mapping="/imagens/**" location="/WEB-INF/recursos/imagens/" /> -->
    <!-- <mvc:resources mapping="/fontes/**" location="/WEB-INF/recursos/fontes/" /> -->
    <!-- <mvc:resources mapping="/fontes/**" location="/WEB-INF/recursos/javascript/" /> -->

    <!-- Possibilita o uso de anotações Spring Mvc. -->
    <mvc:annotation-driven />

    <!-- Alternativa a declarar PersistenceAnnotationBeanPostProcessor, 
    um processador de anotações que lê @PersistenceContext. -->
    <context:annotation-config />

    <!-- Define local para procura de componentes Spring (beans configurados 
        por anotações em classes). -->
    <context:component-scan base-package="com.regra7.st.controle" />
    <context:component-scan base-package="com.regra7.st.db.dao" />
    <context:component-scan base-package="com.regra7.st.servico" />
    <context:component-scan base-package="com.regra7.st.testes" />

    <!-- MINHA DEFINIÇÃO COM MEUS CONVERSORES CRIADOS -->
    <mvc:annotation-driven conversion-service="servicoConversao"/>

    <!-- PROPERTY EDITOR NÃO FUNCIONOU, MAS ISSO SIM! -->
    <bean id="servicoConversao" 
        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.regra7.st.formularios.conversores.Cov_String_LocalDate"/>
                <bean class="com.regra7.st.formularios.conversores.Cov_LocalDate_String"/>
            </set>
        </property>
    </bean>

    <!-- Template Resolver para Template Engine. -->
    <!-- <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> 
        <property name="prefix" value="/WEB-INF/templates/" /> <property name="suffix" 
        value=".html" /> <property name="templateMode" value="HTML5" /> </bean> -->

    <!-- SpringResourceTemplateResolver automatically integrates with Spring's 
        own -->
    <!-- resource resolution infrastructure, which is highly recommended. -->
    <bean id="templateResolver"
        class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
        <property name="prefix" value="/WEB-INF/templates/" />
        <property name="suffix" value=".html" />
        <!-- HTML is the default value, added here for the sake of clarity. -->
        <property name="templateMode" value="HTML" />
        <!-- Template cache is true by default. Set to false if you want -->
        <!-- templates to be automatically updated when modified. -->
        <property name="cacheable" value="true" />
    </bean>

    <!-- SpringTemplateEngine automatically applies SpringStandardDialect and -->
    <!-- enables Spring's own MessageSource message resolution mechanisms. -->
    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver" />
        <!-- Enabling the SpringEL compiler with Spring 4.2.4 or newer can speed 
            up -->
        <!-- execution in most scenarios, but might be incompatible with specific -->
        <!-- cases when expressions in one template are reused across different 
            data -->
        <!-- ypes, so this flag is "false" by default for safer backwards -->
        <!-- compatibility. -->
        <property name="enableSpringELCompiler" value="true" />
    </bean>

    <!-- View resolver do Thymeleaf. -->
    <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="templateEngine" ref="templateEngine" />
    </bean>

    <!-- DATA SOURCE - Implementação do C3p0 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <!-- Propriedades de conexão -->
        <property name = "driverClass" value="org.postgresql.Driver" />
        <property name = "jdbcUrl" value="jdbc:postgresql://localhost:5432/SistemaTeste" />
        <property name = "user" value="postgres" />
        <property name = "password" value="admin" />

        <!-- Propriedades C3p0 -->
        <property name = "initialPoolSize"  value="3" />
        <property name = "minPoolSize"      value="5" />
        <property name = "maxPoolSize"      value="20" />
        <property name = "maxIdleTime"      value="1800" /> <!-- 1800 = 30 min -->
        <property name = "maxStatements"    value="50" />
    </bean>

    <!-- Fábrica EntityManager -->
    <bean id="emf"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="SistemaTeste" />
        <property name="dataSource" ref="dataSource" />
        <property name="jpaDialect">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
        </property>
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.hbm2ddl.auto">none</prop>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL82Dialect</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">false</prop>
                <prop key="hibernate.generate_statistics">false</prop>
                <prop key="hibernate.use_sql_comments">false</prop>
                <prop key="hibernate.default_schema">regrast</prop>
                <prop key="hibernate.jdbc.batch_size">50</prop>
            </props>
        </property>
    </bean>

    <!-- Gerenciador de transações PlatformTransactionManager -->
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="emf" />
    </bean>

    <!-- INTERCEPTADORES -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/usuario/*" />
            <bean class="com.regra7.st.interceptadores.Login" />
        </mvc:interceptor>
    </mvc:interceptors>

</beans>
Run Code Online (Sandbox Code Playgroud)

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">

    <persistence-unit name="SistemaTeste" transaction-type="RESOURCE_LOCAL">

        <!-- PROVEDOR JPA -->
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

    </persistence-unit>

</persistence>
Run Code Online (Sandbox Code Playgroud)

我的主要考试班

public class TesteDAO_001 
{
    public static void main(String[] args) 
    {
        new TesteDAO_001(); // Line 19
    }

    public TesteDAO_001()
    {
        AbstractApplicationContext ac = new ClassPathXmlApplicationContext("/META-INF/spring-config.xml");
        Ser_Usuario servico = ac.getBean(Ser_Usuario.class); // Service class

        // For_Cadastro is an account registration form.
        For_Cadastro form = new For_Cadastro();
        form.setNome("Maria Pereira Maxwell"); // Name
        form.setLogin("rodrigologinsoares001");
        form.setSenha1("minhasenha001001"); // Password
        form.setSenha2("minhasenha001001"); // Password confirmation
        form.setCpf("01234567890"); // CPF = Brazil's Social ID
        form.setNascimento(LocalDate.now()); // Birthday
        form.setPai(0L); // Father
        form.setMae(0L); // Mother
        form.setGenero(0L); // Gender

        System.out.printf("Serviço nulo: %s%n" , servico == null);
        servico.cadastrar(form); // Line 43

        ac.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

服务方式

@Autowired
private Dao_Usuario _daoUsu;

@Transactional(rollbackFor = Exception.class)
public void cadastrar(For_Cadastro form)
{
    imprimir("Fazendo consulta...");
    imprimir(String.format("Dao nulo: %s%n", this._daoUsu == null));

    // This may return null.    
    Usuario pai = this._daoUsu.getPorID(form.getPai()); // Line 46
    Usuario mae = this._daoUsu.getPorID(form.getMae());

    imprimir(String.format("pai nulo: %s%n", pai == null));
    imprimir(String.format("mea nulo: %s%n", mae == null));

    // Usuario is a Domain Model Object. A POJO representation of a table.
    Usuario usu = new Usuario(form.getCpf()); // CPF = Brazil's Social ID
    usu.setGenero(Genero.getGenero(form.getGenero())); // Gender
    usu.setNome(form.getNome()); // Name
    usu.setLogin(form.getLogin());
    usu.setSenha(form.getSenha1().getBytes()); // Password
    usu.setNascimento(form.getNas

小智 6

好吧,我不好意思说我没早点听说。您查询的语法实际上是错误的

return new JPAQueryFactory(this._em)
        .select(QUsuario.usuario)
        .where(QUsuario.usuario.id.eq(id))
        .fetchOne();  
Run Code Online (Sandbox Code Playgroud)

应该

 return new JPAQueryFactory(this._em)
        .selectFrom(QUsuario.usuario)
        .where(QUsuario.usuario.id.eq(id))
        .fetchOne(); 
Run Code Online (Sandbox Code Playgroud)

它的selectFrom而不是select。

  • “JPAQuery”没有“selectFrom”,但“JPAQueryFactory”有。我相信异常消息虽然正确,但没有多大帮助。如果他们添加了诸如“你使用过吗?”之类的内容 这也将建议问题的解决方案,这确实很好。 (2认同)