我在使用Eclipselink 2.2.0映射继承时遇到问题。
这是我的抽象实体:
@Entity
@Inheritance(strategy= InheritanceType.SINGLE_TABLE)
public abstract class Feature extends TenantPossession {
private FeatureType featureType;
@Enumerated(EnumType.STRING)
public FeatureType getFeatureType() {
return featureType;
}
public void setFeatureType(FeatureType featureType) {
this.featureType = featureType;
}
}
子类如下所示:
@Entity
public class RecordingFeature extends Feature {
// here some attributes
}
当我第一次保存功能时,它可以正常工作。但是,当我尝试设置要素类型并保存时,什么也没有发生。
Feature feature = new RecordingFeature();
feature.setType(FeatureType.RECORDING);
feature = featureService.save(feature); // works fine
...提交交易并开始另一笔交易...
feature.setType(FeatureType.UNKNOWN);
feature = featureService.save(feature); // seems to work, but type is not set in DB
它与继承有关吗?在没有继承的情况下,我在代码中还有另一种情况可以正常工作。
最佳答案
save()有什么作用?确保您更改的是对象的托管版本,而不是分离的对象。
您是否启用了编织功能?如果禁用编织(更改跟踪)会怎样?