【发布时间】:2011-11-20 00:41:38
【问题描述】:
我正在尝试将实体扩展为用于填充超类字段的非实体。问题是当我尝试保存它时,Hibernate 会抛出一个 MappingException。这是因为即使我将 ReportParser 转换为 Report,运行时实例仍然是 ReportParser,因此 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 来做到这一点。有可能吗?
【问题讨论】:
标签: java hibernate jpa orm annotations