小编Sem*_*mpa的帖子

在SDG 2.0中获取注释,获取策略问题

嗨所有患者开发者使用弹簧数据图表.由于文档较少且测试覆盖率非常差,因此有时很难理解底层框架的预期行为,框架应该如何工作.目前我有一些与SDG 1.1中引入的新获取方法有关的问题.与SDG 1.1相反,在2.0中写入\ read through只关系和用@Fetch注释注释的相关对象被急切地获取其他人应该被懒惰地取出...现在我的第一个问题:

  • 是否可以配置SDG,以便在同一事务中加载实体并在惰性关系上调用getter时,会自动获取请求的集合?事务范围中的持久性上下文类型,或者可能是针对功能发布进行规划的.
  • 如何为@RelatedTo注释一次获取延迟集合?来自Neo4jOperation的fetch()方法允许仅获取一个实体.我是否必须遍历整个列表并获取每个对象的实体?检查给定对象是否已被提取/初始化的最佳方法是什么?
  • 作为建议,我认为如果在使用未初始化的对象时会抛出延迟加载异常而不是获取NPE,那将更直观.此外,该行为具有误导性,因为当对象未初始化且所有成员属性与id无关时,equals方法可以为尚未初始化的不同对象提供true,这是非常严重的问题,例如考虑集合的设备
  • 我在使用SDG 2.0.0.RC1时注意到的另一个问题如下:当我将新对象添加到未获取的集合时,有时会正确添加并保留,但有时不会.我为这个案例写了测试,它以非确定性的方式工作.有时失败有时会以成功结束.以下是用例:

    Group groupFromDb = neoTemplate.findOne(group.getId(), Group.class);
    assertNotNull(groupFromDb);
    assertEquals("Number of members must be equals to 1", 1,    groupFromDb.getMembers().size());
    User secondMember = UserMappingTest.createUser("secondMember");
    groupFromDb.addMember(secondMember);
    neoTemplate.save(groupFromDb);
    Group groupAfterChange = neoTemplate.findOne(groupFromDb.getId(), Group.class);
    assertNotNull(groupAfterChange);
    assertEquals("Number of members must be equals to saved entity", groupFromDb.getMembers().size(), groupAfterChange.getMembers().size());
    assertEquals("Number of members must be equals to 2", 2, groupAfterChange.getMembers().size());
    
    Run Code Online (Sandbox Code Playgroud)

这个测试有时在最后一个断言上失败,这意味着有时会将成员添加到集合中,有时不会.我猜这个问题出现在ManagedFieldAccessorSet的某个地方,但很难说因为这是不确定的.我用mvn2和mvn3用java 1.6_22和1​​.6_27运行测试,我总是得到相同的结果:有时候确定有时测试失败.User等的实现如下:

@Override
public boolean equals(final Object other) {
    if ( !(other instanceof User) ) {
        return false;
    }
    User castOther …
Run Code Online (Sandbox Code Playgroud)

spring neo4j nosql spring-data-graph

6
推荐指数
1
解决办法
968
查看次数

Wicket从文件系统提供图像

我对Wicket很新,我在使用资源引用方面遇到了一些困难.我正在使用wicket 1.5.4并有以下问题:我将图像存储在文件系统上.我有类ImageElement,它保存相对于配置的rootFilePath的文件路径的一部分(即dir1/dir2/img1.png).在页面上我添加Image如下:

new Image("id",ImagesResourceReference.get(), pageParameters)
Run Code Online (Sandbox Code Playgroud)

其中页面参数包括图像路径参数(path ="/ dir1/dir2/img1.png").我的问题是:

  • 它是从文件系统提供图像的最简单方法吗?
  • 使用ResourceReference和静态方法是否可以?或者我应该每次构建新的ResourceReference?我看到在以前的版本中可以使用新的ResourceReference(globalId),但似乎不再是这种情况了.如果是这样,全球资源参考是什么?据我所知,资源引用应该是资源的工厂,因此为每个资源请求创建新工厂会很奇怪.
  • 最后一个问题是,如何以更好的方式将路径传递给图像,这样一旦在ImageResource上调用了响应方法,我就不必连接索引参数来构建路径.
  • 什么是让它以高效和简单的方式工作的最佳方案,我在"Wicket in action"中看到了这个例子,但这是为了从db生成动态图像,我不确定它是否适合我的情况

我在"/ images"路径下安装在Application中的ResourceReference的实现如下:

public class ImagesResourceReference extends ResourceReference {

private static String rootFileDirectory;

private static ImagesResourceReference instance;

private ImagesResourceReference() {
    super(ImagesResourceReference.class, "imagesResourcesReference");
}

public static ImagesResourceReference get() {
    if(instance == null) {
        if(StringUtils.isNotBlank(rootFileDirectory)) {
            instance = new ImagesResourceReference();
        } else {
            throw new IllegalStateException("Parameter configuring root directory " +
                    "where images are saved is not set");
        }
    }
    return instance;
}

public static void setRootFileDirectory(String rootFileDirectory) { …
Run Code Online (Sandbox Code Playgroud)

wicket image resourcereference

4
推荐指数
1
解决办法
5719
查看次数