2012-06-16 61 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