标签: one-to-one

在O(1)中使用getKey(B)的一对一映射数据结构(A,B)?

这个问题最初是错误的,请参阅下面的编辑.我会把它留给上下文.

我一直在考虑建立双向(即一对一)映射的智能方法.映射函数A-> B(多对一)基本上是HashMap(A,B)的作用.如果我现在想要一个与O(1)中的contains()实现一对一的数据结构,那么我可以使用java标准库中的某些东西吗?请注意,我现在不需要这个,这只是我最近想到的,无法提供数据结构,所以答案并不急.有类似的课吗?如果没有,您认为为什么会这样?

我所能找到的就是关于冬眠的事情,这对我没有任何帮助.

编辑:我的问题是措辞不好,所以一些解释是应该的.

我的意思是"向后"映射B-> A. HashMap(A,B)在O(1)中包含(A)和包含(B),所以这甚至不是我的意思,对于混淆感到抱歉.我的意思是,是否有一个数据结构映射A < - > B在O(1)中有getValue(A)和getKey(B)?

我意识到这可以通过维护包含相同关系的两个HashMaps(A,B)和(B,A)来完成,但我觉得应该有一个数据结构来处理它而不必"手动"执行.

java contains one-to-one

8
推荐指数
2
解决办法
8940
查看次数

如何在Django中获取`OneToOneField()`的关联数据?

我工作于Django 2.0

我有一个Note用于保存笔记的模型,还有另外两个模型用于向笔记添加颜色标签。

class Note(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=250, blank=True, default='Untitled')
    content = models.TextField(blank=True)

class ColorLabels(models.Model):
    title = models.CharField(max_length=100, unique=True)
    value = models.CharField(max_length=100)
    default = models.BooleanField(default=False)

class NoteLabel(models.Model):
    note = models.OneToOneField(Note, on_delete=models.CASCADE)
    color_label = models.OneToOneField(ColorLabels, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

与对象Note

note = Note.objects.get(pk=1)
Run Code Online (Sandbox Code Playgroud)

我想访问关联的ColorLabelstitle字段valueNoteLabel对象。

因为它们是一对一的字段。我尝试做

note.note_label
note.NoteLabel
note.note_label_set
Run Code Online (Sandbox Code Playgroud)

但所有返回错误为

AttributeError: 'Note' object has no attribute 'note_label_set'
Run Code Online (Sandbox Code Playgroud)

python django django-models one-to-one associated-object

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

ORM:Non Primary-Key Join列上的OneToOne映射 - 按ISBN映射的Book和Inventory

我有一个按ISBN号映射的Book模型和Inventory模型,但ISBN不是其中的主键.书籍属于Bookstores,而Inventory是针对一组书店(BookstoreChain).库存由属于BookstoreChain的所有书店共享.

我正在书侧使用Hibernate @OneToOne映射来加入ISBN列来获取库存信息.不知何故,Hibernate正确生成左外连接查询,但库对象上的库存为空.它也不是懒惰的.忽略书店和连锁店,如何在提取书籍时进行OneToOne或ManyToOne连接并获取库存?

class Book{
@Id
Long id

@Column
String isbn;

@Column
String title;

@OneToOne(optional = true)
@JoinColumn(name = "isbn", referencedColumnName = "isbn",insertable = false, updatable = false)
Inventory inventory;
}

class Inventory{
@Id
Long id

@Column
String chainId

@Column
String isbn

@Column
Long availableQty
}
Run Code Online (Sandbox Code Playgroud)

java orm activerecord hibernate one-to-one

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

如何做这个单向NHibernate一对一映射?

这是NHibernate中单向一对一映射的问题.

Student.cs

public class Student
{
    public int ID { get; set; }
    public int Roll { get; set; }
    public int RegNo { get; set; }
    public string Name { get; set; }

    public StudentDetail StudentDetail { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

StudentDetail.cs

public class StudentDetail
{
    public int ID { get; set; }

    public string Father { get; set; }
    public string Mother { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何将这些类(hbm映射文件的外观如何)映射到以下一对一关系的情况?

替代文字

请仔细查看课程和表格.

我在哪里可以把<many-to-one>标签中Student.hbm.xml还是StudentDetail.hbm.xml?如果我把它插入Student.hbm.xml,我怎么能映射列 …

nhibernate one-to-one

7
推荐指数
2
解决办法
2665
查看次数

Doctrine可选的OneToOne映射

我正在尝试在Doctrine中创建一个可选的OneToOne映射.

我有一个包含所有城市和邮政编码的表格(此表格不应更改),我有一张包含地址和映射城市的表格.但有时候我不想在开始时将城市添加到我的地址(可能稍后就会).但是当我没有向地址添加城市时,地址上的持久性会给我一个反射异常,因为没有像'null'这样的对象,它应该是de City对象.

我不希望每次都将空城添加到数据库中,因为不应该向城市表添加或删除任何内容.

有什么建议?或者我错过了什么?

class Address{
/**
 * @OneToOne(targetEntity="City")
 * @JoinColumn(name="city_id", referencedColumnName="id")
 */
  private $city = '';
Run Code Online (Sandbox Code Playgroud)

我考虑的可能解决方案

  • 在db中创建一个空的城市对象,并将其始终分配给新创建的Address对象(可能会导致大量开销)
  • 与一组城市创建一个ManyToMany关系,因此可以添加零个或多个城市(我可以限制我的Address对象中的众多城市)但是我需要一个映射表...

mapping orm doctrine one-to-one

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

一对一的关系还是使用同一个表?

我创建了以下表格:

动漫(id,标题,日期),漫画(id,标题,日期),TVSeries(id,title,season,episode,date)

他们中的一些人已经拥有导演,流派,文章等的外键(一对多或多对多的关系).

现在我想再创建两个表评论(id,评级,日期)和帖子(id,thumbid,articleid,reviewid).评论是关于一个动漫和/或漫画TVSerie,反之亦然,但评论的属性可能在多个表中.关于帖子也一样.

这是单独表中一对一关系的典型示例,还是更有效地向现有表添加更多属性?所以更多的表和关系或更少的表更多列?

谢谢你,我希望我的问题不是那么愚蠢,但我有点困惑.

mysql database one-to-one relational-database

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

与OneToOne mappedBy注释的JPA(Hibernate)问题

我设置了一个oneToOne关系时有两个表.Bill和BillSimpleEntry.(每个Bill都有一个BillSimpleEntry

这是他们的结构

CREATE TABLE `bill` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  ..
  ..
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`),
  KEY `fk_bill_groups1_idx` (`groupId`),
  KEY `fk_bill_user1_idx` (`billPayerId`),
  CONSTRAINT `fk_b...` FOREIGN KEY (`groupId`) REFERENCES `groups` (`id`) ON D     ELETE  NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk_b...` FOREIGN KEY (`billPayerId`) REFERENCES `user` (`id`) ON    DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;



DROP TABLE IF EXISTS `billsimpleentry`;
/*!40101 SET @saved_cs_client     = @@character_set_client …
Run Code Online (Sandbox Code Playgroud)

mapping orm hibernate jpa one-to-one

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

何时在Django模型中使用一对一关系

我读过几个 地方(参见第二个答案),Django模型中的一对一关系几乎总是只用于继承,或访问其他无法访问的模型(如Django用户模型).

但是,似乎有些情况下你有一个对象,它总是只有一个另一个对象的实例,你在逻辑上想要将这两个对象分开.比如说,您的应用程序正在存储有关汽车的信息.每辆车只有一个司机,每个司机只开一辆车.将汽车和驾驶员分成两个独立的车型是不合理的?

python django one-to-one models

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

JPA @OneToOne 选择带有 N+1 个查询的列表

我实际上是在尝试使用 JPA@OneToOne注释将Child实体链接到它的Parent.

它运行良好,除了在获取Childs列表时,JPA 引擎(在本例中为 Hibernate)进行 1+n 次查询。

这是 Hibernate 查询的日志:

select child0_.id as id1_0_, child0_.parent as parent3_0_, child0_.value as value2_0_ from child child0_
select parent0_.id as id1_1_0_, parent0_.something as somethin2_1_0_ from parent parent0_ where parent0_.id=?
select parent0_.id as id1_1_0_, parent0_.something as somethin2_1_0_ from parent parent0_ where parent0_.id=?
select parent0_.id as id1_1_0_, parent0_.something as somethin2_1_0_ from parent parent0_ where parent0_.id=?
Run Code Online (Sandbox Code Playgroud)

使用完全相同的实体定义,特别是当我得到一个孩子时,JPA 使用预期的 JOIN 执行查询:

select child0_.id as id1_0_0_, child0_.parent as parent3_0_0_, child0_.value as …
Run Code Online (Sandbox Code Playgroud)

performance hibernate jpa one-to-one select-n-plus-1

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

Django:OneToOneField-RelatedObjectDoesNotExist

我的模型中有以下两个类:

class Answer(models.Model):
    answer = models.CharField(max_length=300)
    question = models.ForeignKey('Question', on_delete=models.CASCADE)

    def __str__(self):
        return "{0}, view: {1}".format(self.answer, self.answer_number)


class Vote(models.Model):
    answer = models.OneToOneField(Answer, related_name="votes", on_delete=models.CASCADE)
    users = models.ManyToManyField(User)

    def __str__(self):
        return str(self.answer.answer)[:30]
Run Code Online (Sandbox Code Playgroud)

在外壳中我采取第一个答案:

>>> Answer.objects.all()[0]
<Answer: choix 1 , view: 0>
Run Code Online (Sandbox Code Playgroud)

我想获得 Vote 对象:

>>> Answer.objects.all()[0].votes
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Users\Hippolyte\AppData\Roaming\Python\Python38\site-packages\django\db\models\fields\related_descriptors.py", line 420, in __get__
    raise self.RelatedObjectDoesNotExist(
questions.models.Answer.votes.RelatedObjectDoesNotExist: Answer has no votes.
Run Code Online (Sandbox Code Playgroud)

但发生了错误。

我不明白为什么related_name不被识别。你可以帮帮我吗 ?

python django one-to-one

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