我有一个类似的基类(这是一个人工示例):
@Document(collection = "cars")
public class BaseCar implements Serializable
{
private int number;
private String color;
...
}
然后我有一个派生类,如:
@Document(collection = "cars")
public class FastCar extends BaseCar implements Serializable
{
private int numberOfWonRaces;
...
}
对于我来说,我都有一个MongoRepository类:
public interface BaseCarRepository extends MongoRepository<BaseCar, String> {
{ ... }
和
public interface FastCarRepository extends MongoRepository<FastCar, String> {
{ ... }
如果现在将FastCar保存在MongoDB中,则会另外获得一个_class字段,该字段指示数据来自何处。在此示例中,它显示了FastCar。
在我的项目中,我有一个REST API接口来取车。我使用findBy函数通过颜色来获得汽车。例如:
BaseCar baseCar = baseCarRep.findByColor(color);
即使我使用BaseCar对象,Springboot也会检测到它是FastCar,并返回包含所有信息的FastCar对象。
问题: 有没有办法强迫Springboot只返回BaseCar?我不想将所有信息发送到REST API接口。
我到目前为止所做的事情: 如果我删除MongoDB中的_class字段,Springboot将无法再自动检测该类,并返回BaseCar。但是我不想通过强制Springboot删除_class(Spring data MongoDb: MappingMongoConverter remove _class)
来失去此功能。似乎还有一种使用投影来过滤应返回的字段的方法。对我来说,这不是一种优雅的方法,因为我必须再次写下所有字段,并且必须在更新BaseCar类后立即对其进行更新。
谢谢您的帮助。
菲利普