Orm 单点映射

Orm 单点映射,orm,doctrine,mapping,one-to-one,Orm,Doctrine,Mapping,One To One,我试图在条令中创建一个可选的OneToOne映射 我有一个包含所有城市和邮政编码的表(此表不应更改),还有一个包含地址和映射城市的表。但有时我不想在一开始就把城市添加到我的地址中(也许以后会)。但当我不向地址添加城市时,地址上的持久化会给我一个反射异常,因为没有像“null”这样的对象,它应该是de City对象 我不想每次都在数据库中添加一个空城市,因为不应该在city表中添加或删除任何内容 有什么建议吗?或者我错过了什么 class Address{ /** * @OneToOne(tar

我试图在条令中创建一个可选的OneToOne映射

我有一个包含所有城市和邮政编码的表(此表不应更改),还有一个包含地址和映射城市的表。但有时我不想在一开始就把城市添加到我的地址中(也许以后会)。但当我不向地址添加城市时,地址上的持久化会给我一个反射异常,因为没有像“null”这样的对象,它应该是de City对象

我不想每次都在数据库中添加一个空城市,因为不应该在city表中添加或删除任何内容

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

class Address{
/**
 * @OneToOne(targetEntity="City")
 * @JoinColumn(name="city_id", referencedColumnName="id")
 */
  private $city = '';
我考虑过的可能解决方案:

  • 在数据库中创建一个空城市对象,并将其始终分配给新创建的地址对象(可能会导致大量开销)
  • 使用城市数组创建多城市关系,这样可以添加零个或多个城市(我可以限制Address对象中的多个城市),但我需要一个映射表

只需简单地将
nullable=true
添加到
@JoinColumn
注释中

就可以实现多列联接(即@JoinColumns)。我尝试过,但没有任何运气…不幸的是,它生成了带有空参数的INSERT INTO查询,并导致错误:
“INSERT INTO message_CONVERSION(title,lastMessage_id)VALUES(?)”,带有参数[43]
-缺少第二个参数(一对一)。它对我不起作用。我添加了nullable=true,但没有成功。是否有一对一的关系作为可选关系?