java.lang.IllegalArgumentException в Spring-data-Jpa - PullRequest
3 голосов
/ 03 августа 2011

Я получаю исключение

<code>
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'auditTrailRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: [Assertion failed] - this argument is required; it must not be null
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1429)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:1)
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:280)
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:304)
    ... 24 more
Caused by: java.lang.IllegalArgumentException: [Assertion failed] - this argument is required; it must not be null
    at org.springframework.util.Assert.notNull(Assert.java:112)
    at org.springframework.util.Assert.notNull(Assert.java:123)
    at org.springframework.data.jpa.repository.support.SimpleJpaRepository.<init>(SimpleJpaRepository.java:74)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:94)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:69)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:146)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:120)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:39)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
    ... 35 more

</code>

Мой репозиторий определен как

<code>
public interface AuditTrailRepository extends CrudRepository<AuditTrail, Long>, JpaSpecificationExecutor<AuditTrail> {


    public List<AuditTrail> findByKey(String key);

     @Query("select u from AuditTrail u where u.createdDate between :startDate and :endDate ")
     List<AuditTrail> findByDateRange(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

     @Query("select u from AuditTrail u where u.createdDate between :startDate and :endDate and key = :clientId ")
     List<AuditTrail> findByDateRangeForClient(@Param("startDate") Date startDate, 
             @Param("endDate") Date endDate,
             @Param("ClientId") String clientId);


}
</code>

Моя сущность

<code>
@Entity
@Table(name = "AUDIT_TRAIL")
public class AuditTrail extends BaseEntity {

    /**
     * 
     */
    private static final long serialVersionUID = -1647646453787027659L;
    private Long id;
    // ClientID from  
    private String key;
    private TaskType taskType;
    // Inbound / Outbound
    private FileActionType action;
    private String userName;
    private String message;
    private Date startTime;
    private Date endTime;

</code>

Файл persistance.xml в WEB-INF / classes / META-INF равен

<code>
<?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_2_0.xsd"
             version="2.0">
   <persistence-unit name="spring-jpa" />

</persistence>
</code>

Любая помощь будет оценена.

Отвечая на мой вопрос здесь .......

Единственное, что помогло мне перечислить каждую сущность домена в файле 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_2_0.xsd"
             version="2.0">
   <persistence-unit name="spring-jpa" >
        <class>com.multiplan.edi.common.domain.AuditTrail</class>

   </persistence-unit>

</persistence>

1 Ответ

4 голосов
/ 25 августа 2011

Причина, по которой вы видите опубликованное исключение, заключается в том, что мы проглатываем исключение, выданное EntityManager, пытающимся найти EntityType из Metamodel. Я создал проблему JIRA , чтобы отслеживать это.

Вообще говоря, необходимость явного перечисления классов зависит от настройки вашего поставщика сохраняемости JPA. Некоторые из них можно настроить для сканирования пакета на наличие объектов. Другие требуют перечисления хотя бы корневых классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...