У меня есть Hibernate Entity, BaseEvent
, который прекрасно работает:
import javax.persistence.*;
@Entity
@Table(name = "base_event")
@SequenceGenerator(name = "seq", allocationSize = 1, sequenceName = "seq")
public class BaseEvent
{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
@Column(name = "id")
protected Long id = null;
@Column(name = "my_field", nullable = false)
protected String myField;
public Long getId()
{
return id;
}
public void setId(final Long id)
{
this.id = id;
}
public String getMyField()
{
return myField;
}
public void setMyField(final String myField)
{
this.myField = myField;
}
}
Я хочу определить, когда этот объект изменяется, и обновить некоторое значение Map
в моем приложении.Самый простой способ сделать это - расширить BaseEvent
и переопределить установщик:
import java.text.MessageFormat;
public class ExtendedEvent extends BaseEvent
{
@Override
public void setMyField(final String myField)
{
System.out.println(MessageFormat.format("Setting myField to {0}", myField));
super.setMyField(myField);
}
}
Это прекрасно работает в моем приложении, но затем, когда я сохраняю сущность, Hibernate жалуется, что это не так.не знаю, что такое ExtendedEvent
.
java.lang.IllegalArgumentException: Unknown entity: my.package.ExtendedEvent
Я вижу, что расширение Hibernate Entities является нетривиальной проблемой, особенно когда вы начинаете добавлять поля - но все, что я хочу, это чтобы Hibernate лечил ExtendedEvent
как BaseEvent
(потому что это так).Есть ли простое решение для этого?