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告诉学说中继数据库特定的身份生成。

于 2012-06-16T20:06:18.260 回答