我会尽量明白我的坏英语让我......
我在数据库上使用节点定义了一个树,这个节点可以是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上下文和我不确定它会不会影响其他东西