2017-12-14 5 views
3

Hibernate-gneratedドメインオブジェクトのパッチワークがあります。春データでSpringデータのオプションの使用方法<Object>戻り値

@Entity 
@Table(name = "events_t", schema = "public") 
public class EventsT implements java.io.Serializable {  
    private int id; 
    private RecallsT recallsT; // another table 
} 

、私は

RecallsT recallsT = recallsDAO.findById(recallId); 

私は

Optional<RecallsT> recallsT = recallsDAO.findById(recallId); 

を行うことを余儀なくしていますが、これは別の問題を紹介することができません。今、私は私の休止状態を使用することはできませんがオブジェクトはもう機能しません:

eventsT.setRecallsT(recallsT); 

これで、「オプションの< ...>」オブジェクトを普通のオブジェクトに収めることができないというエラーになりました。私がHibernateエンティティで示したように、setterは、私たちのドメインオブジェクトが生成された伝統的な方法のため、まっすぐな普通のオブジェクトを取ります。

どうすればよいですか?

答えて

8

代わり

recallsT.ifPresent(eventsT::setRecallsT); 

オプションは、データの可能性がないことを表しており、このラッパーで作業するためのメソッドを持って書くことができます。 オプションの正しい使用方法の詳細情報is here.

+0

::?これはC++なのでしょうか?これはJavaで有効ですか? –

+2

メソッド参照のためのjava 8の構文です - https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html – ledniov

+0

また、独自の@Query findByXX()メソッドを記述する場合は、オプション?私は普通のオブジェクトを返すように書くことができ、それには問題はないので、実際にはそれがより明確です。私は、単純なオブジェクトを返すすべての手作業のスタブを作成する必要があるのだろう... –

関連する問題