我们有一个由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.的更多信息

10-05 19:05