对象引用未保存的瞬态实例 - 在清理之前保存瞬态实例

时间:2017-01-04 11:23:14

标签: java hibernate jpa

我有错误,我不明白为什么下面没有代码,虽然我知道他的意思。

错误

  

Org.hibernate.TransientPropertyValueException:对象引用一个   未保存的瞬态实例 - 保存之前的瞬态实例   清洁:com.domain.Car.motor - > com.domain.Motor

我在另一个方法中遇到此错误,当我报告session.flush()和session.clear()现在错误传播到此方法时,我会理解没有 填写session.flush()和session.clear()代码。

我没有使用级联,因为电机不能与汽车一起保存,我想在车内保存引擎

错误发生在样本方法SaveSend(Carro carro)的标准中;

问题示例

@Entity
@Table(name="carro")
public class Carro implements Serializable {

    @Id
    private Long codigo;
    private String nome;

    @ManyToOne(targetEntity=Motor.class)
    @JoinColumn(name="codigoMotor", referencedColumnName = "codigoMotor")
    private Motor motor;

    // get and set
}

@Entity
@Table(name="motor")
public class Motor implements Serializable {

    @Id
    private Long codigoMotor;
    private String nome;

    // get and set

}

public void salvar() {
    carro.setMotor(getMotor);
    dao.salvar(carro); // Saving the car Ok;
    depoisSalvar(carro);
}

public void depoisSalvar(carro) {
    salvarVenda(carro); 
}

// Saving the sale
public void salvarVenda(Carro carro) {
    // Before saving, go to DAO to find the buyer
    Criteria cri = getSession().createCriteria(Vendedor.class);
    cri.add(Restrictions.eq("carro.codigo", carro.getCodigo()));    
    return cri.list(); // Aqui acontece o erro....

    dao.salvar();
}

0 个答案:

没有答案