2012-11-15 51 views
1

我正在開發一個Web框架框架Symfony2,它使用Doctrine 2作爲ORM。Doctrine 2繼承:GET方法在抽象子類中不返回任何數據

我有一個叫做'Pregunta'的抽象類有五個子類。其中一個叫做'Seleccion'的抽象類有兩個子類:'SelUnica'和'SelMultiple'。

如果我創建'SelUnica'或'SelMultiple'的實例,它們的GET方法正常工作,但是如果我嘗試獲取類'Seleccion'的屬性,該方法不會返回任何數據,儘管數據庫中的數據已成功保存。這隻發生在屬性上,因爲類'Seleccion'具有關係,並且GET工作正常。

SET方法也能正常工作,如果我在GET方法中放置'echo',它不會顯示任何值。

有什麼想法?

類代碼:

http://pastebin.com/XurWLsst

+0

建議我@Gedrox,我將類Seleccion更改爲MappedSuperclass,並且在使用Doctrine命令清除緩存後,仍然無法工作。更改的代碼在這裏:[http://pastebin.com/bc8tPd3q](http://pastebin.com/bc8tPd3q) – JPunto

回答

0

我認爲你需要@MappedSuperclass註釋標記父抽象類。請參閱http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html

+0

感謝您的建議!我已將類「Seleccion」更改爲MappedSuperclass,但仍無法正常工作。我需要超類「Pregunta」有一個鑑別器列來恢復每個集合實例的子類的類型。 我是否應該將類「Pregunta」更改爲MappedSuperclass?我該怎麼辦? – JPunto

+0

不,'Pregunta'被標記爲實體,不需要將其定義爲'@ MappedSuperclass'。你有沒有定義實體元數據緩存,這會導致新配置不被讀取? – Gedrox

+0

我試圖清除所有緩存用以下命令: 「應用程序/控制檯學說:緩存:明確的元數據」, 「應用程序/控制檯學說:緩存:明確查詢」, 「應用程序/控制檯主義:緩存:明確的結果」。 仍然無法正常工作... – JPunto