Olá pessoal,
Estou tendo um problema ao tentar salvar minhas entidades da classe Instrumento, a qual contém como atributo um objeto anotado como @Embedded. Este atributo por sua vez possui um atributo da classe UnidadeMedida anotado com @ManyToOne. O Hibernate criou a FK para UnidadeMedida corretamente na tabela de instrumentos.
Quando vou salvar um instrumento, recebo o seguinte erro:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.shh.precision.model.UnidadeMedida
Não entendi o porque disso… como vou salvar a instância transiente se a mesma não é uma nova entidade mas sim um valor “embutido” na tabela instrumento através de um FK?
Como posso consertar isso?
As classes e mapeamentos estão assim:
/** CLASSE Instrumento */
@Entity
public class Instrumento {
@Embedded
private CaracteristicasMedicao caracteristicas;
//outros atributos, getters, setters, hashCode, blablabla
}
/** CLASSE UnidadeMedida */
@Entity
@SequenceGenerator(name="unidademedida_id_seq", sequenceName="unidademedida_id_seq")
public class UnidadeMedida {
@Id
@GeneratedValue(generator="unidademedida_id_seq", strategy=GenerationType.SEQUENCE)
private long id;
@NotEmpty(message="Nome não pode ser vazio")
private String nome;
@NotEmpty(message="Símbolo não pode ser vazio")
private String simbolo;
}
/** CLASSE CaracteristicasMedicao */
@Embeddable
public class CaracteristicasMedicao {
@ManyToOne
private UnidadeMedida unidade;
//outros atributos, getters, setters, hashCode, blablabla
}
Obrigado!