当特定鉴别器必须更改时,如何更新继承的实体?

时间:2012-02-02 21:18:44

标签: java hibernate jpa

我会尽量明白我的坏英语让我......

我在数据库上使用节点定义了一个树,这个节点可以是sums,multiplications和任何数学运算,基本节点实体定义为this(只是一个数学运算,表示为posfix表示法上的树)< / p>

@Entity
@Table(name = "Nodo")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "tipo", discriminatorType = DiscriminatorType.STRING)

public abstract class Nodo implements java.io.Serializable, NumberExpressible {

我也有很多类定义像这样的节点类型...

@Entity
@DiscriminatorValue("SUM")
public class SumNode extends Nodo {

我必须使用这个子类,因为每个子类都有特定的逻辑来进行相应的操作......

现在的问题是,当我需要更新树时,我有很多例外,更具体地说这是发生了什么的一个例子 () 例如,我们有一个像这样的简单树(4 + 8)

但是我需要将其更改为:((3 * 2)+ 8)

如果你看到第一个案例中第二个级别的第一个节点是一个constantNode,而在第二个案例中是一个多节点...所以当我从entityManager获取一个对象时我得到一个constantNode,但是当我需要改变类型,它只是不会改变...我试图分离的东西是分离原始实体并合并“新”(并不是真正的新...它只是相同的信息,但不同的类实例..)

任何想法???我被困了一个星期...请帮助我只需要能够更新节点,实际上只是鉴别器...并且不要直接更新,因为我在一个更大的trasac上下文和我不确定它会不会影响其他东西

0 个答案:

没有答案