私はOneToOneを一方向にマップする2つのエンティティ(UserとUserPreferences)を持っています。新しいユーザーが作成されたときにDoctrine2.3とOneToOneのカスケード・サスペンドが機能しないようです。
/**
* @ORM\Table("users")
* @ORM\Entity
*/
class User
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
*/
protected $id;
...
/**
* @ORM\Column(name="user_preferences_id", type="integer")
* @ORM\OneToOne
* (
* targetEntity="UserPreferences",
* cascade={"persist"}
*)
*/
protected $userPreferences;
public function __construct() {
$this->userPreferences = new UserPreferences();
}
}
/**
* @ORM\Table("user_preferences")
* @ORM\Entity
*/
class UserPreferences extends UserPreferencesEntity
{
/**
* @ORM\Id
* @ORM\Column(name="user_id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
...
}
は今、のUserPreferencesが新しいのUserPreferencesオブジェクトで初期化されます。
のコードは次のようになります。 user
を持続しようとすると、Doctrineは
A new entity was found through the relationship '...\Entity\User#userPreferences' that was not configured to cascade persist operations for entity: ...\Entity\[email protected] To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(..,cascade={"persist"}).
を主張し、例外がスローされます。しかし、私は他に何をすべきでしょうか? User#userPreferencesはpersistをカスケードするように設定されていますが、そうではありません。私はここで何か間違っていますか?
アノテーションプロパティなしで試しましたか? – Flosculus
アノテーションなしのプロパティ? – dwalldorf