1
スーパークラスのジェネリックフィールドをHibernateにマップしたいと思います。hibernateとgenericフィールドマッピング
私の母のクラスがある:
@Entity
@Table(name = "ParameterValue")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "parameterType", discriminatorType = DiscriminatorType.STRING)
public abstract class ParameterValue<C>
{
private C value;
/* HELP NEEDED HERE */
public C getValue()
{
return value;
}
public void setValue(C value)
{
this.value = value;
}
}
つのサブクラス:あなたは、私がデータベースで使用するためにどのような列を指定する値フィールドを上書き見ることができるように
@Entity
@DiscriminatorValue(value = "integer")
@AttributeOverride(name = "value", column = @Column(name = "intValue"))
public class IntegerParameterValue extends ParameterValue<Integer>
{
}
。 MyテーブルParameterValueは、各タイプごとに1つずつ複数の列で構成されています。
CREATE TABLE `ParameterValue` (
`intValue` int(11) DEFAULT NULL,
`doubleValue` double DEFAULT NULL,
`stringValue` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
しかし、休止状態と文句を言い:
ParameterValue.value has an unbound type and no explicit target entity. Resolve this Generic usage issue or set an explicit target attribute (eg @OneToMany(target=) or use an explicit @Type
[OK]を、しかし、スーパーでのgetValueのための良好な設定は何ですか? (私は "HELPが必要です"とコメントしました)
このメソッドは、フィールド・アクセスではなく、プロパティー・アクセス(@access(AccessType.FIELD)を使用してくださいParameterValue –
に起因する抽象getValueメソッドに同じ例外をスローするようで、 @TransientアノテーションをgetValueメソッドに追加します。 –