我正在尝试在数据库中持有一个实体类,为此我尝试了几个不同的类实现,但仍然面临错误(但不同的错误).我的实体类现在是这样的:
@Entity
@Table(name="pagina")
public class Pagina extends Entidade {
@Id
@Column(name = "id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer Id;
@Column(name = "nome",unique=true)
private String nome;
@Column(name = "titulo")
private String titulo;
@Column(name = "descricao")
private String descricao;
@OnetoOne( cascade = {CascadeType.ALL},fetch = FetchType.EAGER )
@JoinColumn(name="parent_page")
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Pagina pagina;
@OnetoOne( cascade = {CascadeType.ALL},fetch = FetchType.EAGER )
@JoinColumn(name="parent_product")
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Produto produto;
}
在我的Dao类中,我为我的方法persist(…)尝试了这两个实现:
@Transactional
public boolean persist(E transientInstance) {
try {
sessionFactory.getCurrentSession().persist(transientInstance);
return true;
} catch (RuntimeException e) {
e.printstacktrace();
return false;
}
}
和
@Transactional
public boolean persist(E transientInstance) {
try {
sessionFactory.getCurrentSession().save(transientInstance);
return true;
} catch (RuntimeException e) {
e.printstacktrace();
return false;
}
}
使用这两个选项,如果我尝试保存一个没有属性Pagina或Produto的实体,它就会存储在数据库中而没有任何问题.但是,如果我尝试使用此属性提交数据,我会遇到问题.
使用第一个选项,异常org.hibernate.PersistentObjectException:传递给persist的分离实体被触发,而使用第二个选项,数据存储在数据库中,但是有错误,因为没有值的额外行存储在数据库,我插入的数据行指向该行.
谁知道这里发生了什么?因为我不知道.
PS:
我有这个视图在该表中插入数据:
heading">