具有自定义集合名称的@DBRef指向错误的集合名称

时间:2018-07-22 14:05:14

标签: mongodb spring-data-jpa spring-data spring-data-mongodb

我正在使用dbRef注释将文档保存在mongodb中时遇到一些问题。保存文件时,两个文件都保存在正确的文件中。但是对于具有其他Domain对象的DBRef的Document也进行了设置,但是具有不同的集合(我可以说是默认集合)。

**My Code as follows**

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @XmlRootElement(name = "employees")
    @Document(collection = "employees")
    public class employee implements CollectionName {

        public static final String COLLECTION_NAME = "employees";


        @Id
        @GeneratedValue(generator = "uuid")
        @GenericGenerator(name = "uuid", strategy = "uuid2")
        private String uuid;
        private String employeeName;

        @Transient
        @JsonIgnore
        private String businessIdenitity;

        @DBRef
        @CascadeSave
        private Department department;

        public String getUuid() {
            return uuid;
        }

        public void setUuid(String uuid) {
            this.uuid = uuid;
        }

        public String getBusinessIdenitity() {
            return businessIdenitity;
        }

        public void setBusinessIdenitity(String businessIdenitity) {
            this.businessIdenitity = businessIdenitity;
        }

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

        @Override
        @JsonIgnore
        @Transient
        public String getCollectionName() {
            return businessIdenitity == null|| businessIdenitity.isEmpty() ? COLLECTION_NAME : businessIdenitity + "_"+ COLLECTION_NAME;
        }

    }

     @JsonInclude(JsonInclude.Include.NON_EMPTY)
        @XmlRootElement(name = "department")
        @Document(collection = "department")
        public class Department implements CollectionName {

            public static final String COLLECTION_NAME = "department";


            @Id
            @GeneratedValue(generator = "uuid")
            @GenericGenerator(name = "uuid", strategy = "uuid2")
            private String uuid;
            private String departName;

            @Transient
            @JsonIgnore
            private String businessIdenitity;

            public String getUuid() {
                return uuid;
            }

            public void setUuid(String uuid) {
                this.uuid = uuid;
            }

            public String getBusinessIdenitity() {
                return businessIdenitity;
            }

            public void setBusinessIdenitity(String businessIdenitity) {
                this.businessIdenitity = businessIdenitity;
            }

            @Override
            @JsonIgnore
            @Transient
            public String getCollectionName() {
                return businessIdenitity == null|| businessIdenitity.isEmpty() ? COLLECTION_NAME : businessIdenitity + "_"+ COLLECTION_NAME;
            }

        }

我已经完成了事件监听器,并且保存该部门是级联保存。效果不错,但存储在不同的集合中。

当我的API说要为员工保存公司ID时

{    “ _id”:“ 523-451”,     “部门”:{

      _id" : "523-453",
          etc

} }

我希望将文档保存在businessId_document集合中。

我可以保存在1234_employee集合和1234_department集合中吗。

但是在1234_employee文档中,DBRef指向的部门不是1234_department。

任何人都可以帮我解决这个问题。

0 个答案:

没有答案