- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的关系有问题
@RelationshipEntity(type = RelTypes.Tag.TAG_ON_OBJECT_EVALUATION)
public class TagOnObjectEvaluation
{
@StartNode
private Mashup taggableObject;
@EndNode
private Tag tag;
// Other fields, getters and setters
}
在涉及的两个实体(Mashup
和Tag
)中,我都有这个字段(方向相反)
@RelatedToVia(type = RelTypes.Tag.TAG_ON_OBJECT_EVALUATION,
direction = Direction.INCOMING /*Direction.OUTGOING*/)
private Set<TagOnObjectEvaluation> tagOnObjectEvaluations =
new HashSet<TagOnObjectEvaluation>();
然后,我有各种服务类来管理Tag
、Mashup
和TagOnObjectEvaluation
。现在测试的类是后者。注意:名称有点困惑,它是以前的编码器遗留下来的,您可以阅读 DAO as Service。此外,GenericNeo4jDAOImpl(同样,将其读作 GenericServiceNeo4jImpl)简单地定义了实体管理的标准方法(create()
、find()
、update()
, delete()
, fetch()
)
@Service
public class TagOnObjectEvaluationDAONeo4jImpl extends
GenericNeo4jDAOImpl<TagOnObjectEvaluation> implements
TagOnObjectEvaluationDAO
{
@Autowired
private TagOnObjectEvaluationRepository repository;
public TagOnObjectEvaluationDAONeo4jImpl()
{
super(TagOnObjectEvaluation.class);
}
public TagOnObjectEvaluationDAONeo4jImpl(
Class<? extends TagOnObjectEvaluation> entityClass)
{
super(entityClass);
}
@Override
public TagOnObjectEvaluation create(TagOnObjectEvaluation t)
{
Transaction tx = template.getGraphDatabaseService().beginTx();
TagOnObjectEvaluation savedT = null;
try
{
// This is to enforce the uniqueness of the relationship. I know it can fail in many ways, but this is not a problem ATM
savedT =
template.getRelationshipBetween(
t.getTaggableObject(), t.getTag(),
TagOnObjectEvaluation.class,
RelTypes.Tag.TAG_ON_OBJECT_EVALUATION);
if (savedT == null)
savedT = super.create(t);
tx.success();
}
catch (Exception e)
{
tx.failure();
savedT = null;
}
finally
{
tx.finish();
}
return savedT;
}
}
到目前为止,它看起来非常简单。但是当我尝试保留一个 RelationshipEntity
实例时,我遇到了很多问题。
@Test
public void testRelationshipEntityWasPersisted()
{
TagOnObjectEvaluation tagOnObjectEvaluation = new TagOnObjectEvaluation(taggedObject, tag);
tagOnObjectEvaluationDao.create(tagOnObjectEvaluation);
assertNotNull(tagOnObjectEvaluation.getId());
LOGGER.info("TagOnObjectEvaluation id = " + tagOnObjectEvaluation.getId());
tagDao.fetch(tag);
assertEquals(1, tag.getTaggedObjectsEvaluations().size());
}
上次测试失败:大小为 0 而不是 1。此外,尽管看起来实体已正确存储(它分配了一个 id
),但如果我稍后导航数据库根本没有它的踪迹。我还尝试使用相关节点集以不同的方式添加关系; f.e.
tag.getTaggedObjectsEvaluations().add(tagOnObjectEvaluation);
tagDao.update(tag);
但一点改进都没有。
最佳答案
你需要在你的实体Mashape
中改变关系的方向,(实体对应于你的的
@StartNode
@RelationshipEntityTagOnObjectEvaluation
).
@NodeEntity
class Mashape {
// ...
@RelatedToVia(type = RelTypes.Tag.TAG_ON_OBJECT_EVALUATION, direction = Direction.OUTGOING)
private Set<TagOnObjectEvaluation> tagOnObjectEvaluations = new HashSet<TagOnObjectEvaluation>();
}
就根据specifications点那个@RelatedToVia
spring-data-neo4j
注解的方向默认是OUTGOING
,所以你真的不需要指定方向这个案例。这也应该是正确的:
@RelatedToVia(type = RelTypes.Tag.TAG_ON_OBJECT_EVALUATION)
private Set<TagOnObjectEvaluation> tagOnObjectEvaluations = new HashSet<TagOnObjectEvaluation>();
希望对您有所帮助。
关于java - RelationshipEntity 未保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30260530/
我的关系有问题 @RelationshipEntity(type = RelTypes.Tag.TAG_ON_OBJECT_EVALUATION) public class TagOnObjectEv
在 SDN4 中,我希望保留一个 @RelationshipEntity,它不是 @NodeEntity 的属性。示例: @NodeEntity public class User{ Long
我是 Neo4j 新手,正在阅读 Spring-data-Neo4j 文档。目前我不清楚定义实体 bean 中的节点关系。 我们可以在属性上使用@Relationship,direction为INCO
我正在创建指向它们之间的实体和关系实体。我将 RelationshipEntity 放在一个实体中,然后保存该实体。这也会自动保存 RelationshipEntity。 我知道关系已保存,因为我可以
我有以下类(class): @NodeEntity public class Item{ //... } @RelationshipEntity(type = "HAS") public clas
我正在使用 Spring-Data-Neo4j 创建一个示例。在此执行CRUD操作,所有操作运行成功。但是当我从实体获取关系船集合时,它仅返回节点的 graphId ,其他值为 null。以下是我的代
此功能曾一度有效,但在最新的 SDN4 快照 (7-16-15) 中似乎已损坏 我有两个节点类,一个代表中间的非叶节点,一个代表一阶的叶顶点节点。这两个类实现了一个公共(public)接口(inter
我有两个 Maven 项目; a) REST 服务器项目 b) 一个 Rest 消费客户端项目 我想创建一个包含域 POJO 类的第三个项目 - 并将其作为依赖项添加到其他两个项目中,这样我只有一个包
可以对关系节点使用动态值吗?我想为 Neo4j 上的每个图设置不同的关系,我认为这可以提高 Neo4j 的性能,但我想知道是否可以在 Java 上使用具有动态关系值的 OGM。 非常感谢。 最佳答案
实际上,我正在尝试使用 RelationshipEntity 类保存一个节点,如下所示: 节点类 @NodeEntity public class MyEvent { @GraphId
为了使用 neo4j-graphdatabase 独立服务器,我将 SDN 4.0.0.RC1 的依赖项添加到我的 pom: org.springframework.data
我正在关注 Neo4j OGM 指南 - http://neo4j.com/docs/ogm/java/stable/ 对于关系实体,我们需要有一个起始节点和一个结束节点。我对示例进行了一些修改(以使
我在通过 Spring Data Rest 将 @RelationshipEntities 序列化为 JSON 时遇到问题。每当我创建@RelationshipEntity 时,我都会遇到将图形序列化
我是一名优秀的程序员,十分优秀!