- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开发了两组类 - 第一个只是类,而在第二组中,类派生自接口(interface)。两组类都互相模仿。它们的存储库也相似。但是,存储库对于第一组类(节点和关系)效果很好。对于第二组类,存储库能够插入记录,但 findAll 方法失败并且不会返回任何记录。
这是存储库中的第一组类 -
public abstract class Entity {
@GraphId
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || id == null || getClass() != o.getClass()) return false;
Entity entity = (Entity) o;
if (!id.equals(entity.id)) return false;
return true;
}
@Override
public int hashCode() {
return (id == null) ? -1 : id.hashCode();
}
}
public abstract class GenericRepository<T> implements IGenericRepository<T> {
private static final int DEPTH_LIST = 1;
private static final int DEPTH_ENTITY = 2;
private Session session;
public GenericRepository(String url, String username, String password) {
super();
session = Neo4jSessionFactory.getInstance().getNeo4jSession(url, username, password);
}
public Iterable<T> findAll() {
return session.loadAll(getEntityType(), DEPTH_LIST);
}
public T findOne(Long id) {
return session.load(getEntityType(), id, DEPTH_ENTITY);
}
public void delete(T entity) {
session.delete(session.load(getEntityType(), ((Entity) entity).getId()));
}
public T createOrUpdate(T entity) {
session.save(entity, DEPTH_ENTITY);
return findOne(((Entity) entity).getId());
}
public abstract Class<T> getEntityType();
}
@RelationshipEntity(type="MY_ROLE")
public class ARole extends Entity {
@Property
private String title;
@StartNode
private HomoSapiens start;
@EndNode
private HomoSapiens end;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public HomoSapiens getStart() {
return start;
}
public void setStart(HomoSapiens start) {
this.start = start;
}
public HomoSapiens getEnd() {
return end;
}
public void setEnd(HomoSapiens end) {
this.end = end;
}
public ARole() {}
public ARole(String title) {
this.title = title;
}
}
@NodeEntity
public class HomoSapiens extends Entity {
private String name;
@Relationship(type = "MY_ROLE", direction = Relationship.INCOMING)
private ARole aRole;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ARole getaRole() {
return aRole;
}
public void setaRole(ARole aRole) {
this.aRole = aRole;
}
public HomoSapiens() {}
public HomoSapiens(String name) {
this.name = name;
}
}
public class ARoleDao extends GenericRepository<ARole> implements IARoleDao {
public ARoleDao(String url, String username, String password) {
super(url, username, password);
}
@Override
public Class<ARole> getEntityType() {
return ARole.class;
}
}
这是第二组类 -
public interface IARole {
String getTitle();
void setTitle(String title);
IHomoSapiens getStart();
void setStart(IHomoSapiens start);
IHomoSapiens getEnd();
void setEnd(IHomoSapiens end);
}
public interface IHomoSapiens {
String getName();
void setName(String name);
IARole getARole();
void setARole(IARole aRole);
}
@RelationshipEntity(type="MY_DERIVED_ROLE")
public class DerivedARole extends Entity implements IARole {
@Property
private String title;
@StartNode
private IHomoSapiens start;
@EndNode
private IHomoSapiens end;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public IHomoSapiens getStart() {
return start;
}
public void setStart(IHomoSapiens start) {
this.start = start;
}
public IHomoSapiens getEnd() {
return end;
}
public void setEnd(IHomoSapiens end) {
this.end = end;
}
public DerivedARole() {}
public DerivedARole(String title) {
this.title = title;
}
}
@NodeEntity
public class DerivedHomoSapiens extends Entity implements IHomoSapiens {
private String name;
@Relationship(type = "MY_DERIVED_ROLE", direction = Relationship.INCOMING)
private IARole aRole;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IARole getARole() {
return aRole;
}
public void setARole(IARole aRole) {
this.aRole = aRole;
}
public DerivedHomoSapiens() {}
public DerivedHomoSapiens(String name) {
this.name = name;
}
}
public class DerivedARoleDao extends GenericRepository<DerivedARole> {
public DerivedARoleDao(String url, String username, String password) {
super(url, username, password);
}
@Override
public Class<DerivedARole> getEntityType() {
return DerivedARole.class;
}
}
public class DerivedARoleDaoSpecs {
private DerivedARoleDao derivedARoleDao;
@Before
public void setUp() throws Exception {
derivedARoleDao = new DerivedARoleDao(DomainHelper.NEO_URL, DomainHelper.NEO_USERNAME,
DomainHelper.NEO_PASSWORD);
}
public void should_insert_data() {
IHomoSapiens start = new DerivedHomoSapiens("d-start");
IHomoSapiens end = new DerivedHomoSapiens("d-end");
IARole aRole = new DerivedARole("parent");
start.setARole(aRole);
end.setARole(aRole);
aRole.setStart(start);
aRole.setEnd(end);
IARole created = derivedARoleDao.createOrUpdate((DerivedARole)aRole);
assertThat(created, is(notNullValue()));
}
public void should_find_all() {
Iterable<DerivedARole> derivedARoles = derivedARoleDao.findAll();
assertThat(derivedARoles, is(notNullValue()));
assertThat(Iterables.isEmpty(derivedARoles), is(false));
assertTrue(Iterables.size(derivedARoles) > 0);
System.out.println(Iterables.size(derivedARoles));
}
@Test
public void should_do_crud() {
// should_insert_data();
should_find_all();
// should_find_by_id();
}
}
我在这里遗漏了什么吗?或者 Neo4j OGM 是否可以与类(不实现接口(interface))很好地配合?
整个源代码位于 - https://github.com/mmwaikar/java-neo-ogm-ex (以防万一,它有帮助)。谢谢,马诺杰。
最佳答案
这应该在 1.1.3 中修复
在发布之前,请使用 1.1.3-SNAPSHOT
尝试您的代码示例。
您需要包含
<repository>
<id>neo4j-snapshots</id>
<url>http://m2.neo4j.org/content/repositories/snapshots</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
关于java - Neo4j OGM 与界面配合良好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32907836/
到目前为止,我一直在我的项目中使用嵌入式 Neo4j 服务器。现在我想使用独立服务器尝试新的 Bolt 协议(protocol),但仅限于我部署的应用程序。为了方便起见,我仍然想在从 IDE 运行(永
使用 session.load() 查询深度 2 时出现超时.我正在使用 Neo4j OGM 1.1.3(尝试从 Spring Data Neo4j 3.4 迁移)。尝试加载 Node 对象 clas
这是我在 PersistenceContext.java 中的代码 package yuzhaoLiu.project.testNeo4j; import org.neo4j.ogm.config.C
我是 Neo4J 的新手,正在尝试通过 java 连接到 Neo4J 服务器。 我的一个独立项目的pom入口如下: org.neo4j neo4j-o
部署 ear 时出现此错误。 org.jboss.msc.service.StartException in service jboss.persistenceunit."test.ear/serve
Neo4j OGM 遇到问题库并与“子类”有关系: @NodeEntity class MyEntity{ @GraphId private Long graphId; ... } c
我正在使用 Neo4j ogm 将许多(超过 20 个)类似的类映射到 neo4j db 中,这些类的不同之处在于关系名称、名称和方向。每个类都仅使用一个相同的方法来实现“Classification
我的 graphDb 中有 3 种类型的节点。 技能、SkillSubCluster 和SkillCluster。一个 Skill 节点连接到一个或多个 SkillSubCluster 节点(一对多关
我开发了两组类 - 第一个只是类,而在第二组中,类派生自接口(interface)。两组类都互相模仿。它们的存储库也相似。但是,存储库对于第一组类(节点和关系)效果很好。对于第二组类,存储库能够插入记
在我的项目中,我有MapNodes,它们通过关系ConnectRelation连接。 ConenctRelation 有一个属性长度。节点及其关系毫无问题地保存到 Neo4J 数据库中。但是当加载节点
我遇到了 neo4j OGM 的问题图书馆,我已按照图书馆 docs page 上的说明进行操作实现一个抽象父实体以包含我的实体的所有共享字段和功能。然后,当我用具体的类继承此类并尝试执行 sessi
我有两个 NodeEntity 类,它们以多对一关系相关(如多对一)。假设许多实体 A 与单个实体 B 相关。我希望能够加载深度大于 0 的实体 B,但不加载许多相关实体 A,并且实际上不需要访问实体
假设我们有一个巨大的 mongodb 集合(大约 60,000,000 条记录),并且我们希望滚动它,当然不想获取大量内存。对于 Hibernate orm 来说,这是可能的,因为有滚动 api 和条
我想使用 py2neo 的 OGM 来表示从一种节点类型到两种节点类型的关系。 我有一个解决方案(如下),仅适用于在数据库中存储节点/关系,并且我找不到在检索关系时正常工作的解决方案。 这是我的例子。
我昨天发现了 Neo4j OGM,并迅速创建了一个新项目来测试它的工作原理。我遇到的一个问题是设置 Relationhip 属性,因为这对我的项目至关重要。这是一个例子: 房间节点: @NodeEnt
在我的 Java 代码中,我有一个查询来匹配树中从根到叶子的最短路径。 Strinq query = "Match path = (p:Root)-[*1..100]-(m:Leaf) " +
我们觉得我们终于对 Neo4j-ogm 中看到的奇怪行为有了解释。我们最初认为这与 equals/hashcode 实现有关,但事实并非如此。 似乎 ogm 保留了图的缓存副本,并且在事务内所有检索都
我正在尝试获取 OGM 上密码查询的结果。基本上,我一直在关注本教程:OGM Tutorial . 我有一个实体接口(interface)(与教程中的接口(interface)相同): pub
正如上面的图块,我一直在尝试使用 neo4j-ogm 和 kotlin,但没有成功。如果我尝试保留我的数据,Neo4j 会抛出异常,“类 xxxx 不是有效实体”。 package com.asoft
有人对 Hibernate OGM 与 Kundera 的使用有反馈吗?我知道这两个框架正在为 NoSQL 解决方案提供 Java 持久性 (JPA) 支持,我想从研究过这两个框架的人的经验中受益。听
我是一名优秀的程序员,十分优秀!