Olá pessoal,
Recentemente migrei um sistema Tomcat para o Openshift. Eles tem uma plataforma que cria automaticamente um sistema basicão configurado com JBoss 7, hsqldb e hibernate.
Mas no Tomcat, quando salvava um usuário, não acontecia isso:Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.xxx.webcomponents.model.Role
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:126) [hibernate-core-4.0.0.CR2.jar:4.0.0.CR2]
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:721) [hibernate-core-4.0.0.CR2.jar:4.0.0.CR2]
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:714) [hibernate-core-4.0.0.CR2.jar:4.0.0.CR2]
(...)
@Entity
@Table(name = "tb_role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(unique = true, nullable = false)
private Integer id;
(...)
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "tb_user_role", joinColumns = { @JoinColumn(name = "role_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") })
private Set<User> userRoles;
@Entity
@Table(name = "tb_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(unique = true, nullable = false)
private Integer id;
(...)
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "tb_user_role", joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "role_id", referencedColumnName = "id") })
private Role role;