Я использую JPA / EclipseLink.Я определил суперкласс с именем Parameter
@Entity
@Table(name="parameter")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING,length=64)
@DiscriminatorValue(value="fr.itce.babel.entity.Parameter")
public class Parameter {
@Id
String code;
String value;
...
}
и двумя другими объектами, наследующими
@Entity
@DiscriminatorValue(value="fr.itce.babel.entity.Line")
public class Line extends Parameter {
}
@Entity
@DiscriminatorValue(value="fr.itce.babel.entity.Phase")
public class Phase extends Parameter {
}
Когда я выбираю все строки, генерируется запрос
select code, value from parameter where type = ?
с type = 'fr.itce.babel.entity.Line'
Это работает для меня.
Но при удалении объекта Line я получаю что-то вроде этого
delete from parameter where code = ?
Тьфу ... он не использует столбец дискриминатора и поэтому удаляет все сущности с одинаковым событием кода, если это Фаза ...
Как я могу принудительно использовать столбец дискриминаторав моем запросе на удаление?