Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用@DbRef注释引用GridFSFile(spring数据mongodb)_Java_Spring_Gridfs_Mongodb Java_Dbref - Fatal编程技术网

Java 如何使用@DbRef注释引用GridFSFile(spring数据mongodb)

Java 如何使用@DbRef注释引用GridFSFile(spring数据mongodb),java,spring,gridfs,mongodb-java,dbref,Java,Spring,Gridfs,Mongodb Java,Dbref,我有一个spring@Document对象配置文件 我想引用GridFSFile,比如: @DbRef private GridFSFile file; 该文件将写入另一个集合类型GridFS 设置profile.setFile(file)时,我总是有一个java.lang.StackOverflowerError 我不明白,如果有人想引用我感兴趣的文件 谢谢, Xavier我想要类似的东西,但没有找到办法,所以我做了这个变通办法 在@Document类中,放置一个ObjectId字段 @Do

我有一个spring@Document
对象配置文件

我想引用GridFSFile,比如:

@DbRef
private GridFSFile file;
该文件将写入另一个集合类型GridFS

设置
profile.setFile(file)时,我总是有一个
java.lang.StackOverflowerError

我不明白,如果有人想引用我感兴趣的文件

谢谢,
Xavier

我想要类似的东西,但没有找到办法,所以我做了这个变通办法

在@Document类中,放置一个
ObjectId
字段

@Document
public class MyDocument {
     //...    
     private ObjectId file;
}
然后在您的存储库中,添加自定义方法将文件链接到此MyDocument,遵循并使用
GridFsTemplate

public class MyDocumentRepositoryImpl implements MyDocumentRepositoryCustom {

    public static final String MONGO_ID = "_id";


    @Autowired
    GridFsTemplate gridFsTemplate;

    @Override
    public void linkFileToMyDoc(MyDocument myDocument, InputStream stream, String fileName) {
        GridFSFile fsFile = gridFsTemplate.store(stream, fileName);
        myDocument.setFile( (ObjectId) fsFile.getId());
    }

    @Override
    public void unLinkFileToMyDoc(MyDocument myDocument)
    {
        ObjectId objectId = myDocument.getFile();

        if (null != objectId)  {
            gridFsTemplate.delete( Query.query(Criteria.where(MONGO_ID).is(objectId)) );
            myDocument.setFile(null);
        }
    }
}
顺便说一下,您需要在JavaConf中声明
GridFsTemplate
,以自动连接它

@Bean
public GridFsTemplate gridFsTemplate() throws Exception {
    return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
}
@Bean
public GridFsTemplate gridFsTemplate() throws Exception {
    return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
}