2016-03-29 11 views
0

エンティティBと1対1のマッピングを持つエンティティAがあります。エンティティAでfindByObjectを使用して行を探したいとします。私のリポジトリにSTRFilterRules1対1にマッピングされたSpringデータリポジトリ

@Repository 
public interface STRFilterRuleRepository extends CrudRepository<STRFilterRule, Long> { 

List<STRFilterRule> findByBankUser(BankUser bankuser); 
} 

の一覧を取得する方法がある今

@Entity 
@Table(name = "str_filter_rule") 
public class STRFilterRule extends STRRule { 

private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "id", unique = true) 
private Long id; 

@OneToOne 
private BankUser bankUser; 

@OneToOne(cascade = CascadeType.ALL) 
private TransactionDeviation transactionDeviation; 

@OneToOne(cascade = CascadeType.ALL) 
private TransactionActivity transactionActivity; 

@OneToOne(cascade = CascadeType.ALL) 
private AccountActivity accountActivity; 

public STRFilterRule() { 
    super(); 
} 

public STRFilterRule(BankUser bankUser, TransactionDeviation transactionDeviation, TransactionActivity transactionActivity, 
     AccountActivity accountActivity) { 
    super(); 
    this.bankUser = bankUser; 
    this.transactionDeviation = transactionDeviation; 
    this.transactionActivity = transactionActivity; 
    this.accountActivity = accountActivity; 
} 

public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

public BankUser getBankUser() { 
    return bankUser; 
} 

public void setBankUser(BankUser bankUser) { 
    this.bankUser = bankUser; 
} 

public TransactionDeviation getTransactionDeviation() { 
    return transactionDeviation; 
} 

public void setTransactionDeviation(TransactionDeviation transactionDeviation) { 
    this.transactionDeviation = transactionDeviation; 
} 

public TransactionActivity getTransactionActivity() { 
    return transactionActivity; 
} 

public void setTransactionActivity(TransactionActivity transactionActivity) { 
    this.transactionActivity = transactionActivity; 
} 

public AccountActivity getAccountActivity() { 
    return accountActivity; 
} 

public void setAccountActivity(AccountActivity accountActivity) { 
    this.accountActivity = accountActivity; 
} 

}

:ここ

はBankUserと1対1の関係を持っている私のエンティティですプログラムを実行中にコンソールに次のエラーが表示される:

org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'STRSettingController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'strFilterRuleServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.lftechnology.warehouse.suspicioustransaction.repository.STRFilterRuleRepository com.lftechnology.warehouse.suspicioustransaction.service.impl.StrFilterRuleServiceImpl.strFilterRuleRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'STRFilterRuleRepository': Invocation of init method failed; nested exception is java.lang.NullPointerException 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:311) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4738) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'strFilterRuleServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.lftechnology.warehouse.suspicioustransaction.repository.STRFilterRuleRepository com.lftechnology.warehouse.suspicioustransaction.service.impl.StrFilterRuleServiceImpl.strFilterRuleRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'STRFilterRuleRepository': Invocation of init method failed; nested exception is java.lang.NullPointerException 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:201) 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:512) 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:486) 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:615) 
at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:169) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:308) 
... 22 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.lftechnology.warehouse.suspicioustransaction.repository.STRFilterRuleRepository com.lftechnology.warehouse.suspicioustransaction.service.impl.StrFilterRuleServiceImpl.strFilterRuleRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'STRFilterRuleRepository': Invocation of init method failed; nested exception is java.lang.NullPointerException 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:571) 
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331) 
... 35 more 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'STRFilterRuleRepository': Invocation of init method failed; nested exception is java.lang.NullPointerException 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1145) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1069) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:967) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:543) 
... 37 more 
Caused by: java.lang.NullPointerException 
at org.springframework.data.jpa.repository.query.QueryUtils.isAlreadyFetched(QueryUtils.java:558) 
at org.springframework.data.jpa.repository.query.QueryUtils.toExpressionRecursively(QueryUtils.java:473) 
at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.build(JpaQueryCreator.java:199) 
at org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:146) 
at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:86) 
at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:44) 
at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:109) 
at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:88) 
at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:73) 
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$QueryPreparer.<init>(PartTreeJpaQuery.java:110) 
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$CountQueryPreparer.<init>(PartTreeJpaQuery.java:230) 
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:64) 
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:95) 
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:206) 
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:73) 
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:408) 
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:206) 
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251) 
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237) 
at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) 
at  org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
... 47 more 
+0

サービス中です。しかし、リポジトリから上記のメソッドを削除しても、エラーはありません。 –

+0

OneToOneを構成してリストを返します。 ListまたはOneToOneが間違っています。 –

答えて

0

あなたはコードの下で試すことができ、これはあなたが私のコメントを無視しているので下BankUser

@Repository 
public interface STRFilterRuleRepository extends CrudRepository<STRFilterRule, Long> { 

STRFilterRule findById(long id); 
} 
+0

質問を正しく読んでください! –

+0

1対1リレーションシップは、リレーションシップのいずれかの側のリストとして結果を返すことはありません。なぜあなたは結果がリストにあると期待していますか?なぜあなたはnullポインタ例外を取得していますか?あなたはあなたのサービスやコントローラ側でレポのオートワイヤリングを行う場所でコードを送ることができますか – Shaan

0

をすべての親オブジェクトを保持します。 STRFilterRuleとBankUserの間にOneToOneマッピングがあるため、戻り値の型リストはありません。マッピングまたは戻り値の型を変更します。

戻り値の型を変更する例。

@Repository 
public interface STRFilterRuleRepository extends CrudRepository<STRFilterRule, Long> { 

    STRFilterRule findByBankUser(BankUser bankuser); 
} 
関連する問題