Olá, pessoal do GUJ!
Tudo bem?
Estou aqui aprendendo sobre as funcionalidades do Hibernate, e me surgiu o pequeno problema:
Bom, tenho duas tabelas no meu Banco de Dados:
Create Table dbo.GruposUsuarios (
Codigo Bigint Not Null Primary Key,
Grupo Varchar(50) Not Null
);
Create Sequence dbo.ProximoGrupoUsuario;
Create Table dbo.Usuarios (
Codigo Bigint Not Null Primary Key,
Usuario Varchar(30) Not Null,
Senha Varchar(20) Not Null,
GrupoUsuario Bigint Not Null,
Foreign Key (GrupoUsuario) References dbo.GruposUsuarios(Codigo)
);
Create Sequence dbo.ProximoUsuario;
Beleza, dá pra ver que há um relacionamento um-para-muitos entre as tabelas GruposUsuarios e Usuarios.
Daí tá… Fui mapear minhas classes do Hibernate, mas não sei como mapear esse relacionamento entre elas. Tentei desse modo:
<hibernate-mapping>
<class name="digidoc.model.Bean.Usuario" table="Usuarios">
<id name="codigo" column="codigo" type="java.lang.Long">
<generator class="native" />
</id>
<property name="usuario" not-null="true" column="usuario" type="java.lang.String" />
<property name="senha" not-null="true" column="senha" type="java.lang.String" />
<many-to-one name="grupousuario"
column="grupousuario"
class="digidoc.model.Bean.GrupoUsuario"
not-null="true"/>
</class>
</hibernate-mapping>
Pelo visto não tá funcionando, pois o Hibernate me retorna o seguinte erro:
coluna "grupousuario" é do tipo bigint mas expressão é do tipo bytea
Dica: Você precisará reescrever ou converter a expressão.
Penso que esse erro possa ser pelo fato de eu ter um objeto GrupoUsuario dentro da minha classe Usuario, não sei.
Minha codificação, para teste, está assim:
public class Main
{
public static void main(String[] args)
{
try {
GrupoUsuario grupo;
Usuario usuario;
grupo = new GrupoUsuario();
grupo.setGrupoUsuario("Administradores");
HibernateHelper.saveOrUpdate(grupo);
grupo = new GrupoUsuario();
grupo.setGrupoUsuario("Estagiários");
HibernateHelper.saveOrUpdate(grupo);
grupo = (GrupoUsuario) HibernateHelper.find(GrupoUsuario.class, new Long(1) );
usuario = new Usuario();
usuario.setUsuario("nicolas");
usuario.setSenha("123456");
usuario.setGrupoUsuario(grupo);
HibernateHelper.saveOrUpdate(usuario);
HibernateHelper.commitTransaction(); // <--- - é aqui que dá o erro, na hora de executar um Commit na operação!
}
catch (HibernateException err) {
err.printStackTrace();
}
catch (SQLException err) {
err.printStackTrace();
}
}
}
Qualquer ajuda será bem-vinda!
Valeu, galera, abraços!