domingo, 20 de mayo de 2012

GWT - GWT + Spring + JPA + Hiberante 2

En el siguiente sitio se encontrara una ejemplo que se esta desarrollando utilizando las siguientes tecnologías:

https://code.google.com/p/gwt-spring-hibernate-maven/

  • Maven
  • Gwt
  • Gwt - MVP - Activities and Places
  • Spring
  • Spring Security
  • JPA
  • Hibernate

Para mas informacion, podra acceder a la siguiente URL donde se encontrara una bitácora de los temas que se desarrollaron, los temas que faltan desarrollar y las tecnologias utilizadas con sus pro y contras:

https://code.google.com/p/gwt-spring-hibernate-maven/wiki/Componentes?ts=1337542729&updated=Componentes

Un link muy interesante donde encontraremos varios ejemplos de GWT:

http://gwt.google.com/samples/Showcase/Showcase.html

miércoles, 2 de mayo de 2012

Referencias de tablas a una tabla en particular utilizando SQL Developer

La herramienta SQL Developer no te permite ver las referencias hacia una tabla en particular.  Por ejemplo, al intentar borrar un equipo, nos sale un error de que no se puede eliminar ya que existe una FK de una tabla X que esta haciendo referencia al equipo que estamos intentando eliminar:

delete from equipment_det where equipmentidentifier = 34599;

Error:

Error starting at line 11 in command:
delete from equipment where identifier = 34599
Error report:
SQL Error: ORA-02292: integrity constraint (ESQUEMA.SC_EQUIPMENTIDENTIFIER_FK) violated - child record found
02292. 00000 - "integrity constraint (%s.%s) violated - child record found"
*Cause:    attempted to delete a parent key value that had a foreign
           dependency.
*Action:   delete dependencies first then parent or disable constraint.

Aquí vemos que no podemos borrar el registro de la tabla equipment ya que existe alguna otra tabla que contiene un registro que esta apuntando a nuestro registro que queremos eliminar-

Para esto, como no tenemos forma de verificar mediante el SQL Developer todas las tablas que nos hacen referencia mediante un FK, vamos a ejecutar la siguiente consulta:

select owner,constraint_name,constraint_type,table_name,r_owner,r_constraint_name
  from all_constraints 
 where constraint_type='R'
   and r_constraint_name in (select constraint_name 
                               from all_constraints 
                              where constraint_type in ('P','U') 
                                  and table_name='EQUIPMENT');




De esta manera, encontramos que la constraint SC_EQUIPMENTIDENTIFIER_FK pertenece a la tabla SERVICIO_CONF

Ver: http://stackoverflow.com/questions/1143728/how-can-i-find-which-tables-reference-a-given-table-in-oracle-sql-developer


Otra forma de ver las referencias de las FK a una tabla en particular es mediante la siguiente consulta:

SELECT Parent.TABLE_NAME Parent_TABLE,
Parent.CONSTRAINT_NAME Parent_CONSTRAINT,
RTRIM(Child.TABLE_NAME) Child_TABLE, atc.comments AS Table_Desc,
Child.CONSTRAINT_NAME Child_CONSTRAINT,
RTRIM(col.COLUMN_NAME) AS Child_Col, col.POSITION AS Child_Col_Position
,CHILD.Delete_Rule, CHILD.STATUS
FROM All_CONSTRAINTS Child, All_CONSTRAINTS Parent, sys.all_tab_comments atc,
ALL_CONS_COLUMNS col
WHERE Child.R_CONSTRAINT_NAME = Parent.CONSTRAINT_NAME
AND Child.TABLE_NAME != Parent.TABLE_NAME
AND Parent.TABLE_NAME = upper('XXXXXXX)
AND Child.owner = atc.Owner(+)
AND Child.TABLE_NAME = atc.table_name(+)
AND col.owner = child.owner
AND Child.constraint_name = col.constraint_name
ORDER BY Child.TABLE_NAME


donde XXXXXXX va el nombre de la tabla en cuestión