无法在自引用列上保留数据



当我想持久化对自己有引用的实体时,我遇到了一个奇怪的问题。

数据库:

PROJECT具有列PARENT_ID,该列保存对其自身的引用。

型号:

/**
* @OneToOne(targetEntity="Model_Name")
* @JoinColumn(name="PARENT_ID", referencedColumnName="ID")
**/

protected $_parentId;

代码:

$project->setParentId(int);

在设置了PARENT_ID之后,我保持实体,并且除了PARENT_ID之外的所有数据都存储在DB中。

编辑

Id字段/列

/**
* @Id
* @Column(type="integer", name="ID")
* @GeneratedValue(strategy="IDENTITY")
*/
protected $_id;
/**
* @return int
*/
public function getParentId()
{
return $this->_parentId;
}
/**
* @param  int $parentProjectId
* @return Application_Model_Data_Project $this
*/
public function setParentId($parentId)
{
$this->_parentId = $parentId;
return $this;
}

你能发布更多的代码吗?那部分看起来很好。

这是一个工作的自参考实体的SSCCE。也许这会有所帮助。

/**
* @Entity @Table(name="messages")
**/
class Model_Message
{
/** 
* @Id @Column(name="message_id",type="integer") @GeneratedValue 
**/
protected $id;
/**
*@ManyToOne(targetEntity="Model_Message")
*@JoinColumn(name="parent_id", referencedColumnName="message_id")
**/
protected $parentMessage;
/**
* @OneToMany(targetEntity="Model_Message", mappedBy="parentMessage")
**/
protected $replies = array();
[...]
}

编辑

如果你想用条令保存与另一个对象的关系,你必须保存对象,而不是id。这意味着你必须设置Model_Name对象,而不能设置标记为Model_Name(targetEntity)的变量中的id(整数)。(条令将在数据库中自动使用int)。

请参阅我上面的ManyToOne示例。

/**
* @OneToOne(targetEntity="Model_Name")
* @JoinColumn(name="PARENT_ID", referencedColumnName="ID")
**/
protected $_parent;

[...]
/**
* @param  Model_Name $parentProject
* @return Application_Model_Data_Project $this
*/
public function setParent($parent)
{
$this->_parent = $parent;
return $this;
}

相关内容

  • 没有找到相关文章

最新更新