我想了解繼承在工作中如何工作!但尚未成功。如何從玩類框架中的超類繼承模型
所以,我有這樣的超:
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
abstract class SuperClass extends Model {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_TABLE")
@TableGenerator(name = "SEQ_TABLE")
Long id;
int testVal;
}
和2繼承的類:
@Entity
public class Sub extends SuperClass {
String name;
@Override
public String toString() {
return name;
}
}
@Entity
public class Sub1 extends SuperClass {
String name;
@Override
public String toString() {
return name;
}
}
而且我有2個控制器,用於繼承類:
public class Subs and Sub1s extends CRUD {
}
應用程序啓動後,我在MySQL數據庫中爲我的模型(Sub和Sub1)接收了2個表,結構如下:id bigint(20),name varchar(255)。沒有testVal這是超類。
當我嘗試創建CRUD接口子類的新對象,我收到這樣的錯誤:/app/views/tags/crud/form.html:在模板{CRUD模塊}發生 執行錯誤。引發的異常是MissingPropertyException:沒有這樣的屬性:testVal類:models.Sub。
在{模塊:污物} /app/views/tags/crud/form.html(圍繞線64) #{crud.numberField名:field.name,值:(currentObject currentObject [字段.name]:null)/}
- 我該如何正確生成繼承模型的MySQL表並修復錯誤?
- 是否有可能有一個單一的superController幾個繼承類?
請注意,您使用默認訪問修飾符聲明您的字段。將其更改爲公開,以便播放PropertiesEnhaner可以完成其工作。 – sdespolit
謝謝。我已經添加了對「Long id」和「int testVal」的公共訪問權限。現在我可以在CRUD界面看到testVal字段,並且可以保存模型沒有錯誤。但MySql中仍然沒有這樣的字段,所以我不能保存這個值。我相信我應該爲這個值添加一些註釋,但是什麼? – gl0om
最後,我找到了解決方案:我剛剛將'@ MappedSuperclass'添加到'SuperClass'並從中刪除了'Long id'。 ** sdespolit **,如何接受您的建議添加公共訪問權限中介?我找不到任何接受按鈕。 – gl0om