在Spring-data-Jpa中的java.lang.IllegalArgumentException

5
我遇到了一个异常。
<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>

WEB-INF/classes/META-INF目录下的persistance.xml文件是

<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
你看到的异常信息是因为我们捕获了由EntityManager抛出的异常,它试图从Metamodel中查找EntityType。我已经创建了一个JIRA问题来跟踪这个问题。
一般来说,是否需要显式列出类取决于你的JPA持久化提供程序的设置。其中一些可以配置为扫描实体所在的包,而其他一些则需要至少列出根类。

你期望什么样的活动?这个问题在2011年9月初已经解决,一年多以前就已经发布了... - Oliver Drotbohm
抱歉,我刚刚离开了。顺便说一句,你能帮我一个忙吗?我对一个异常问题感到有些疯狂:https://gist.github.com/4143358 你能帮我解决一下吗? - A N M Bazlur Rahman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接