2017-08-29 6 views
0

私は、複数のフィールドと2つの一時的なものを持つプロトタイプのエンティティBeanを持っています。これらのうちプロトタイプもあり、他はシングルトンです。Hibernate - ロード時にオートワイアードフィールドを設定する

@Component 
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) 
@Entity 
@Table(name = "tableA") 
class A{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private long id; 

    private String name; 

    @Autowired 
    @Transient 
    private CacheA cache; //Prototype bean for caching some calc results 

    @Autowired 
    @Transient 
    private ServiceA service; //Singleton service bean 

} 

私はHibernateはインスタンスを作成するときに、春は文句を言わない任意のフィールドをautowireので、データベースからインスタンスを読み取ろうとするまで、すべてが動作します。

追加情報:私はCrudRepositoryを使用しており、スプリングブートによって自動設定されています。

このようなケースを適切に解決するにはどうすればよいですか?これは意図された動作ですか、あるいはhibernateがスプリングコンテキストを使用するためにいくつかの追加設定を行う必要がありますか?

答えて

0

私は、あなたの問題は、この問題の場合と同じであると信じて:

Bean injection inside a JPA @Entity

は、このを見てください。私は確信しています、それは助けになるでしょう。

+0

それは私が見つけた唯一の方法であるように見えます。しかし、私はすべてのロジックをサービスに適切に分離してエンティティをpojosにすると、よりクリーンなソリューションになると思います。正直言って、私は冬眠をコンテキストからBeanにするいくつかの方法があるはずです。とにかく、ありがとう、私はもう少し待つだろう、誰かが別の解決策を知っているかもしれない。 –

+0

はい、間違いなく。 – gschambial

関連する問題