2012-06-16 59 views
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字段。会发生什么?

回答

3

如果生成您自己的ID,你应该使用:

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

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

+0

我完全忽略了,因为我没有指定自动增量,但教义认为我应该反正。这解决了它。 – MikeG