我想將一個實體擴展成一個非實體,用於填充超類的字段。問題是,當我嘗試保存它時,Hibernate會拋出一個MappingException。這是因爲即使我將ReportParser投影到Report,運行時實例仍然是ReportParser,因此Hibernate抱怨它是未知的實體。如何在Hibernate中堅持一個非實體子類的實體
@Entity
@Table(name = "TB_Reports")
public class Report
{
Long id;
String name;
String value;
@Id
@GeneratedValue
@Column(name = "cReportID")
public Long getId()
{
return this.id;
}
public void setId(Long id)
{
this.id = id;
}
@Column(name = "cCompanyName")
public String getname()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
@Column(name = "cCompanyValue")
public String getValue()
{
return this.name;
}
public void setValue(String value)
{
this.value = value;
}
}
ReportParser僅用於填寫字段。
public class ReportParser extends report
{
public void setName(String htmlstring)
{
...
}
public void setValue(String htmlstring)
{
...
}
}
嘗試將其轉換爲一個報告,並將其保存
...
ReportParser rp = new ReportParser();
rp.setName(unparsed_string);
rp.setValue(unparsed_string);
Report r = (Report)rp;
this.dao.saveReport(r);
我用這個模式之前,我搬到了一個ORM,但我無法弄清楚如何與Hibernate這樣做。可能嗎?
這看起來比子類化實體更好。謝謝! – vopilif