我们有一个由Hibernate合并的域对象的拼凑而成,例如
@Entity
@Table(name = "events_t", schema = "public")
public class EventsT implements java.io.Serializable {
private int id;
private RecallsT recallsT; // another table
}
有了Spring Data,我做不到
RecallsT recallsT = recallsDAO.findById(recallId);
我被迫做
Optional<RecallsT> recallsT = recallsDAO.findById(recallId);
但这引入了另一个问题:现在我不能再使用我的Hibernate对象,因为这将不起作用:
eventsT.setRecallsT(recallsT);
现在的错误将是它无法将“Optional ”对象放入普通对象中。正如我在Hibernate实体中所展示的,由于传统的域对象生成方式,该setter会获取一个普通的普通对象。
该怎么办?
最佳答案
你可以写
recallsT.ifPresent(eventsT::setRecallsT);
Optional表示可能没有数据,并具有与此包装器一起使用的方法。
有关正确使用可选is here.的更多信息