我有几个对象都是一个类的子对象。我正在使用spring hibernate inheritancetype.single\表将它们存储到数据库中。
我有一个返回任何子对象的方法:
public Optional<? extends Product> getProductByID(long productId) {
LOGGER.info("Returning product with ID: " + productId);
return productDao.findById(productId);
}
在编写导入时,我知道对象类型是什么。如何构建特定对象并访问特定于该子对象的getter和setter?
我可以使用单独的方法和单独的存储库来完成它:
public Optional<Cassette> getCassetteByID(long productId) {
LOGGER.info("Getting Cassette with ID: {} from DB", productId);
return cassetteDao.findById(productId);
}
有没有可能用一个带if语句的方法来代替呢?像这样:
public Optional<? extends Product> getProductByID(long productId) {
LOGGER.info("Returning product with ID: " + productId);
if (productId <= 4) {
return brakeDao.findById(productId);
} else if (productId <= 9) {
return cassetteDao.findById(productId);
} else {
return productDao.findById(productId);
}
}
对不起,我的问题冗长,我不太清楚如何界定这个问题。我想有一个完整的对象,这样我可以得到具体的数据和改变的东西需要。
1条答案
按热度按时间e4yzc0pl1#
您可以有一个泛化的方法,您可以在调用站点指定所需的类型。比如:
在呼叫站点上,您将使用:
尽管在大多数情况下,这可能不是做事的首选方法。您还可以按t类型切换以委托给特定的dao,但这可能更糟,因为继承树中的更改意味着您必须修改该切换。