标签: bidirectional-relation

杰克逊 - 具有双向关系的实体的序列化(避免周期)

我有两个实体:

Parent {
   Child[] children;
}

and 

Child {
   Parent parent;
}
Run Code Online (Sandbox Code Playgroud)

我知道@JsonBackReference@JsonManagedReference.如果我正在序列化实例,那么它们很好Parent.

但我还需要传输实例,Child并希望parent填充该字段.

换一种说法:

  1. Parent它的序列化应该有,children但他们的父字段可能是空的(可以通过使用json引用注释来解决).
  2. Child它的序列化应该parent与他们children(但children不必parent填充.

有没有办法使用标准的Jackson功能来解决它​​?

即跳过已经序列化的实体的序列化,而不是标记符合条件或不符合序列化条件的字段.

java json cycle jackson bidirectional-relation

43
推荐指数
2
解决办法
3万
查看次数

Neo4j双向关系

有没有办法使用Cypher在Neo4j中创建双向关系?我希望这种关系是双向的,而不是在两个方向上形成两个单向关系,例如:

(A)<-[FRIEND]->(B)
Run Code Online (Sandbox Code Playgroud)

而不是:

(A)-[FRIEND]->(B)
(A)<-[FRIEND]-(B)
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

relationship neo4j bidirectional-relation cypher

23
推荐指数
2
解决办法
1万
查看次数

在MongoEngine中实现双向关系

我正在构建一个使用MongoDB和MongoEngine来存储数据的Django应用程序.为了呈现我的问题的简化版本,我想要有两个类:User和Page.每个页面应该与用户和每个用户关联页面.

from mongoengine import *

class Page(Document):
    pass

class User(Document):
    name = StringField()
    page = ReferenceField(Page)

class Page(Document):
    content = StringField()
    user = ReferenceField(User)
Run Code Online (Sandbox Code Playgroud)

(请注意,必须在User之前定义Page.如果我缺少处理循环依赖关系的Pythonic方法,请告诉我.)每个文档都可以创建并保存得很好,但是为用户分配页面会引发错误.

u = User(name='Jeff')
u.save()
p = Page(content="I'm a page!")
p.save()
p.user = u
p.save()
u.page = p
u.save()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build\bdist.win32\egg\mongoengine\document.py", line 71, in save
  File "build\bdist.win32\egg\mongoengine\base.py", line 303, in validate
mongoengine.base.ValidationError: Invalid value for field of type "ReferenceField"
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么抛出这个异常,我做错了什么,以及如何避免它?

python circular-reference mongodb bidirectional-relation mongoengine

22
推荐指数
2
解决办法
4050
查看次数

Scala中有双向映射这样的东西吗?

我想链接2列唯一标识符,并能够通过第二列值获得第一列值,并通过第一列值获得第二列值.就像是

Map(1 <-> "one", 2 <-> "two", 3 <-> "three")
Run Code Online (Sandbox Code Playgroud)

Scala有这样的设施吗?

实际上我还需要更多:3列在三元组中选择三元组中的任何一条(在整个地图中永远不会遇到单个值).但是2列双向映射也可以提供帮助.

collections scala map bidirectional-relation scala-collections

22
推荐指数
3
解决办法
7514
查看次数

JPA更新双向关联

让我们假设我们有以下实体:

    @Entity
    public class Department {

        @OneToMany(mappedBy="department")
        private List<Employee> employees;
    }

    @Entity
    public class Employee {

        @ManyToOne
        private Department department
    }
Run Code Online (Sandbox Code Playgroud)

在更新中我们需要维护关系的两个方面,这是可以理解的,如下所示:

Employee emp = new Employee();
Department dep = new Department();
emp.setDepartment(dep);
dep.getEmployees().add(emp);
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到现在.问题是我应该如下所示在双方应用合并,并且我避免第二次合并级联?

entityManager.merge(emp);
entityManager.merge(dep);
Run Code Online (Sandbox Code Playgroud)

或者正在合并拥有方?这些合并也应该发生在Transaction或EJB中吗?或者在具有分离实体的简单控制器方法上执行它就足够了?

java hibernate jpa bidirectional-relation

11
推荐指数
1
解决办法
1万
查看次数

@OneToOne单向和双向

我有两个例子,第一个是@OneToOne单向映射和第二个双向映射.在单向映射中,拥有方表必须包含引用另一个表的id的连接列; 然后在双向中它们都必须包含彼此的外键列.但是在使用自动生成策略生成数据库模式之后,两个示例对数据库模式具有相同的效果.单向映射是正常的,但双向示例只包含一个外键列,但它必须涉及彼此的外键!

单向映射

@Entity
public class Customer43 {

@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
@OneToOne
@JoinColumn(name = "address_fk")
private Address43 address;

// Getters, Setters and Constructors.
}

@Entity
public class Address43 {

@Id
@GeneratedValue
private Long id;
private String street1;
private String street2;
private String city;
private String state;
private String zipcode;
private String country;

// Getters, Setters and Constructors.
}
Run Code Online (Sandbox Code Playgroud)

双向映射

@Entity
public class Customer44 {

@Id
@GeneratedValue …
Run Code Online (Sandbox Code Playgroud)

jpa one-to-one bidirectional-relation

10
推荐指数
1
解决办法
3万
查看次数

为什么hibernate执行两个查询以急切加载@OneToOne双向关联?

我有实体A有一个B实体,而B有一个带有@OneToOne双向关联的A.

现在,当我找到所有A记录时,hibernate在B上执行左外连接的两个查询,如下所示:

select a.id, a.id_b, a.field1, b.id, b.field1 from A as a, B as b left outer join b ON b.id=a.id_b;
select a.id, a.id_b, a.field1, b.id, b.field1 from A as a, B as b left outer join b ON b.id=a.id_b WHERE b.id=?
Run Code Online (Sandbox Code Playgroud)

首先查询加载A和B字段,这没关系,但为什么要执行第二次查询来重新加载A?我认为这个查询加载了B中的A内容,但是这个A显然是包含B的A ......所以它已经加载了第一个查询,是不是真的?

- 编辑 -

实体A:

@Entity
public class A implements Serializable{
    // id and other ecc ecc
    @OneToOne
    @JoinColumn(name="id_b")
    B b;
}
Run Code Online (Sandbox Code Playgroud)

实体B:

@Entity
public class B implements Serializable{
    // id and other ecc ecc
    @OneToOne(mappedBy="b")
    A …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa one-to-one bidirectional-relation

9
推荐指数
1
解决办法
6181
查看次数

使用官方c#驱动程序在mongodb中保存具有双向关系的对象

我有两个这样的课:

public Class Company
{
    public IList<Employee> Employees;
}

public Class Employee
{
    public Company WorkPlace;
}
Run Code Online (Sandbox Code Playgroud)

当我想保存类公司的对象时:

MongoDatabase Database = MongoServer.GetDatabase("db");

var workPlace = new Company();

var employee = new Employee { WorkPalce = workPlace}    
workPlace.Employees = new List<Employee>{ employee };

Database.GetCollection<Company>("company").Save(workPlace);
Run Code Online (Sandbox Code Playgroud)

将抛出StackOverFlow异常.

c# stack-overflow mongodb bidirectional-relation mongodb-.net-driver

7
推荐指数
1
解决办法
2557
查看次数

rails 4何时需要"inverse_of"?

我是第一次使用rails 4开发一个Web应用程序.我正在使我的所有模型关联双向并在允许的任何地方使用inverse_of.

通过阅读文档,我发现这可能是最佳实践的印象,但在任何地方都没有明确说明.

我很感激经验丰富的rails开发人员在这方面的任何一般建议.我希望这个问题在这里没有价值.

谢谢!

更新:除了非标准名称之外,似乎还有两个主要的附加情况需要明确设置inverse_of:

  1. for INVALID_AUTOMATIC_INVERSE_OPTIONS(http://www.rubydoc.info/docs/rails/ActiveRecord/Reflection/AssociationReflection)
  2. 如果你接受嵌套属性 - 这是因为父对象尚未保存,因此没有id.请参阅http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations

ruby ruby-on-rails bidirectional-relation rails-4-2-1

7
推荐指数
1
解决办法
919
查看次数

Spring @ResponseBody Json Cyclic Reference

我试图使用Spring 3.x @ResponseBody生成json/xml响应,当有很多关系b/w表时我使用JPA 2.0 ORM然后json抛出LazyInitializationException

如果我给出"渴望获取",那么它将进入循环引用.

java spring spring-mvc jackson bidirectional-relation

5
推荐指数
1
解决办法
3937
查看次数