Problema con hibernate y los esquemas de postgreSQL
Publicado por john daniel velasquez (1 intervención) el 22/12/2015 10:03:18
He creado un proyecto java web con maven en netbeans,
el cual estoy usando hibernate 4 + spring 4 + primefaces 5
el preblema precisamente lo tengo a la hora de insertar
tomen en cuenta que mi bd tiene dos esquemas
"adm" y "com"
los cuales al insertar en cualquier tabla que esta en cualquiera de estos esquemas no se completa la transaction
estoy usando este metodo que he creado
para los que saben sobre Hibernate ya deben entender porque uso persist y no save...
entonces el problema llega aqui:
a la hora de ejecutar el metodo en el log sale
Información: Hibernate: select max(id) from nombre_tabla
WARN: SQL Error: 0, SQLState: 42P01
ERROR: ERROR: no existe la relación «nombre_tabla»
Position: 21
se entien que hibernate para el caso del metodo "persist" primero hace un selec max(id).... para obtener el id maximo y con este dato hacer el insert cuando llegue al "commint".
tomen en cuenta que hice un insert a la tabla x en este caso "nombre_tabla" pero esta tabla está en el esquema "adm"
y tambien tomen en cuenta que los hbm.xml de cada entidad tiene especificado su respectivo esquema.
El error lo entiendo, pero lo que no entiendo es por que "Hibernate" no reconoce el nombre del esquema que tiene mapeado esas tablas.
este error con los esquemas solo me sucede para el metodo "persist".
por favor si alguien puede darme una ayuda.
el cual estoy usando hibernate 4 + spring 4 + primefaces 5
el preblema precisamente lo tengo a la hora de insertar
tomen en cuenta que mi bd tiene dos esquemas
"adm" y "com"
los cuales al insertar en cualquier tabla que esta en cualquiera de estos esquemas no se completa la transaction
estoy usando este metodo que he creado
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public <Entidad> Entidad registrar(Session session, Entidad entidad) throws Exception {
boolean aux = session == null;
try {
if (aux) {
session = getSession();
session.beginTransaction();
LOGGER.info("se creo transaction");
}
session.persist(entidad);
if (aux) {
session.getTransaction().commit();
LOGGER.info("se registro" + entidad.getClass().getSimpleName());
} else {
LOGGER.info("se registro de la tranction" + entidad.getClass().getSimpleName());
}
} catch (Exception e) {
if (aux) {
if (session != null) {
session.getTransaction().rollback();
LOGGER.error("transaction rollback");
}
}
throw e;
} finally {
if (aux) {
if (session != null) {
session.close();
LOGGER.info("session close");
}
}
}
return entidad;
}
para los que saben sobre Hibernate ya deben entender porque uso persist y no save...
entonces el problema llega aqui:
a la hora de ejecutar el metodo en el log sale
Información: Hibernate: select max(id) from nombre_tabla
WARN: SQL Error: 0, SQLState: 42P01
ERROR: ERROR: no existe la relación «nombre_tabla»
Position: 21
se entien que hibernate para el caso del metodo "persist" primero hace un selec max(id).... para obtener el id maximo y con este dato hacer el insert cuando llegue al "commint".
tomen en cuenta que hice un insert a la tabla x en este caso "nombre_tabla" pero esta tabla está en el esquema "adm"
y tambien tomen en cuenta que los hbm.xml de cada entidad tiene especificado su respectivo esquema.
El error lo entiendo, pero lo que no entiendo es por que "Hibernate" no reconoce el nombre del esquema que tiene mapeado esas tablas.
este error con los esquemas solo me sucede para el metodo "persist".
por favor si alguien puede darme una ayuda.
Valora esta pregunta


0