Spring Data MongoDB - 不使用注解的模型类

9
这个问题与没有注释的Spring Data MongoDB模型类有关。我遇到了这样一种情况:我需要将我的领域类存储在关系数据库存储或NoSQL存储中。例如,我的领域类是User、Feature、PaymentRequest、Order、OrderLine、OrderHeader等。由于各种原因,我不能在我的领域类上使用任何注释。应用程序团队将指定他们喜欢存储在哪个持久性存储中。他们可能配置为将其存储在MongoDB中,也可能存储在MySQL或Oracle中。我的要求是,在使用spring-data-mongodb存储时,我希望利用领域对象中关联对象的DBRefs。如何在不使用模型类中的注释的情况下通过spring-data-mongodb实现这一点呢?
class Role 
{

    String id;
    String roleName;

}

class User {

    String id;
    String firstName;
    String lastName;

    List<Role> userRoles;
}

当我保存用户对象时,我希望确保在MongoDB中,角色对象被存储为DBRefs而不是实际的角色对象图。

我的问题是─在不使用我的User和Role类中的注释的情况下─我该如何实现这一点?

我在用户论坛上搜索了很久也没有找到方法。这就是我在这里发帖的原因。

谢谢, Kishore Veleti A.V.K.

1个回答

0
不确定您是否已经解决了这个问题,但是您可以使用AspectJ创建ITD(inter-type declaration)将注释编织到类中,而无需实际修改原始代码。
例如,要将userRoles转换为DBRef,您只需要使用以下方面:
import org.springframework.data.mongodb.core.mapping.DBRef;
privileged aspect User_Mongo {   
    declare @field: * User.userRoles : @DBRef;
}

这只是将@DBRef注释添加到名为userRoles的User字段中。您可以查看AspectJ文档以获取有关字段模式和ITD的更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接