0

このように定義されたマップされたスーパークラスがあります:

/** @ORM\MappedSuperclass */
abstract class BaseEntity {
/**
 * @var string $id
 *
 * @ORM\Column(name="id", type="string", length=32, nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
protected $id;

/**
 * @var datetime $dateCreated
 *
 * @ORM\Column(name="date_created", type="datetime", nullable=false)
 */
protected $dateCreated;

function __construct() {
    $this->id = $this->generateId();
}

そしてそれを拡張するサブクラス。私はこの例外を受け取ります:

General error: 1364 Field 'id' doesn't have a default value 

オブジェクトを構築した後に getId メソッドでエコーを実行すると、有効な文字列が返されるため、そうではありません。興味深いことに、同じテーブルに何かを挿入する前に検索クエリを実行します。検索クエリは「id」フィールドを認識しますが、挿入は認識しませんが、両方とも date_created フィールドを認識します。何が起こっている可能性がありますか?

4

1 に答える 1

3

自分で ID を生成する場合は、次を使用する必要があります。

* @ORM\GeneratedValue(strategy="NONE")

IDENTITYデータベース固有の ID 生成を中継するように教義に指示します。

于 2012-06-16T20:06:18.260 に答える