Doctrine Mapped Superclass不识别主键

时间:2012-06-16 18:31:32

标签: php orm symfony doctrine-orm

我有这样定义的映射超类:

/** @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方法进行回显,并返回一个有效的字符串,这样就不是了。有趣的是,在我将相同的内容插入到同一个表中之前,我会进行查找查询。 find查询识别'id'字段,insert不会识别date_created字段。可能会发生什么?

1 个答案:

答案 0 :(得分:3)

如果你自己生成id,你应该使用:

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

IDENTITY告诉学说中继数据库特定的身份生成。