Spring Data MongoDB - 没有注释的模型类

时间:2015-04-06 13:17:24

标签: spring-data-mongodb

此问题与没有注释的Spring Data MongoDB模型类有关。

我有一种情况需要将我的域类存储在RDBMS存储或NoSQL存储中。比如说我的域类是User,Feature,PaymentRequest,Order,OrderLine,OrderHeader等。

由于各种原因,我无法在我的域类中使用任何注释。

应用程序团队将指定他们想要存储的持久存储。他们可能会将其配置为将其存储在MongoDB或MySQL或Oracle等中。

我的要求是当我在MongoDB中存储时说使用spring-data-mongodb我想利用DBRefs来获取域对象中的关联对象。

如何在我的模型类中使用spring-data-mongodb而不使用注释。

class Role 
{

    String id;
    String roleName;

}

class User {

    String id;
    String firstName;
    String lastName;

    List<Role> userRoles;
}

当我保存User对象时,我想确保在MongoDB中将Role对象存储为DBRefs而不是实际的Role对象图。

我的问题是──在我的用户和角色类中没有使用注释─我怎样才能实现这个目标?

我搜索了用户的论坛,却找不到办法。这就是我在这里发帖的原因。

谢谢, Kishore Veleti A.V.K。

1 个答案:

答案 0 :(得分:0)

不确定你是否想过这个,但是你可以使用AspectJ来创建一个ITD(类型间声明),将注释编织到类中,而不必实际修改原始代码。

例如,要将userRoles转换为DBRef,您只需要这个方面:

import org.springframework.data.mongodb.core.mapping.DBRef;
privileged aspect User_Mongo {   
    declare @field: * User.userRoles : @DBRef;
}

这只是将@DBRef注释添加到用户名为userRoles的任何字段中。您可以查看AspectJ文档,了解有关字段模式和ITD的更多信息。