此问题与没有注释的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。
答案 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的更多信息。