@Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorValue("1") public class InheritanceWithSingleTable { public InheritanceWithSingleTable(String name) { this.name = name; } private String name; @Basic(optional=false) public String getName(){ return name; } public void setName(String name){ this.name = name; } private long id; @Id @GeneratedValue public long getId() { return id; } public void setId(long id) { this.id = id; } // ..... }
@Entity @DiscriminatorValue("2") public class InheritanceWithSingleTableChild extends InheritanceWithSingleTable { public InheritanceWithSingleTableChild(String name){ super(name); } @Override @Transient public String getName() { return "START " + super.getName() + " END "; } //... }
InheritanceWithSingleTableChild child = InheritanceWithSingleTableChild("foo"); // ... save, prerist // childReladed the child reloaded from DB String result = childReloaded.getName(); //the expected result would be "START foo END", but I get "START START foo END END "
Assuming that I can not change the classes, only the annotations or XML mappings //is it possible to get the expected behaviour "START foo END"?
|