使用Morphia从Mongo获取文档时将值设置为非DB属性

问题描述 投票:0回答:1

这是一个名为product的集合(表)中的一个示例文档(行),它位于MongoDB中:

{ 
    "_id" : ObjectId("5cb39171528a28f831f"), 
    "seller" : "Product Seller 1", 
    "title" : "Product Title 1", 
    "price" : "159.75", 
    "brand" : "Product Brand 1", 
    "productId" : NumberInt(247)
}

此集合的Java模型如下所示:

@Entity(value = "product", noClassnameStored = true)
@Data
public class Product {
    @Id
    @Property("_id")
    private ObjectId objectId;

    private String seller;
    private String title;
    private String price;
    private String brand;
    private Long productId;
}

我在这里使用Morphia作为MongoDB Java驱动程序。我正在使用Lombok @Data注释,它提供了构造函数,getter和setter。 该模型运行良好,能够从数据库中获取数据。我的新要求是在模型中添加一个额外的字段。新字段的名称是stringObjectId,它将以字符串格式存储objectId的值。

请注意,DB文档中不会有任何更改。也就是说,没有新字段被添加到DB文档中。

当我以列表或单行query.asList();的形式从集合中获取数据时,我希望这样 stringObjectId中的值也应该填充。像这样的东西: stringObjectId = objectId.toString()

不久我试图覆盖这个模型的setter和构造函数来设置stringObjectId变量中的值,但似乎没有任何效果。有什么办法可以实现吗?

java orm morphia
1个回答
2
投票

看看Morphia LifeCycle活动:https://www.playframework.com/modules/morphia-1.2.4/lifecycle-def

@PostLoad将在这里有所帮助。你可能也需要@Transient

© www.soinside.com 2019 - 2024. All rights reserved.