スーパークラスのフィールドを埋めるために使用される非エンティティにエンティティを拡張しようとしています。問題は、それを保存しようとすると、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