Tema: Spring
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/02/2011, 04:16
PricipiantePenoso
 
Fecha de Ingreso: febrero-2011
Mensajes: 1
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Spring

Buenas, soy novato en esto de Spring+Hibernate, os comento mi problema por si me podeis ayudar:

* BBDD: Derby.
* HIBERNATE 3.2.3
* SPRING 2.0.4

* Tengo 3 entidades: NODE, ROOM (tiene una referencia @ManyToOne a NODE) y EQUIPMENT (tiene una referencia @ManyToOne a NODE y otra a ROOM). que están dadas de alta en el aplication contex así como las propiedades de conexión de la BBDD.

* Un DAO cuyos métodos están implementado con generics, esto es...

Código PHP:
public interface MusicDAO<extends MyEntity>
{
    
    
    public 
void create(T entity);
    public 
void delete(T entity);
    public 
void update(T entity);
    
    public List<
TreadAll(Class<TclazzEntity);
    
    public 
T readById(Serializable id, Class<TclazzEntity);
    

Donde MyEntity es un interfaz vacio que es implementado por las 3 entidades.

Mi problema está en la inserción de datos, la estoy realziando de momento desde clases de Test por lo que para cada Entidiad utilizo un método distinto.

Código PHP:

public class Create extends TestCase {

    
Logger log Logger.getLogger(Create.class);

    @
Override
    
protected void setUp() throws Exception {
        
super.setUp();

    }

    @
SuppressWarnings("unchecked")
    @
Transactional
    
public void testCreateNode() throws Exception {
        
log.debug(" --> DAO.");

        
MusicDAO<NodeEntitydao = (MusicDAO<NodeEntity>) BeanFactory.getDao();

        
log.debug(" --> DAO GENERADO.");
        
log.debug(" --> INCIO CARGA DE NODOS.");

        
String[] arrayNombreCorto = { "MADRID""MURCIA",
                
"ALICANTE""MALAGA" };
        
String[] arrayNombre = { "COM. MADRID""Reg. Murcia",
                 
"COM. VALENCIANA""ANDALUCIA" };

        for (
int index 0index arrayNombreCorto.lengthindex++) {

            
NodeEntity node = new NodeEntity();
            
node.setName(arrayNombre[index]);
            
node.setShortName(arrayNombreCorto[index]);
            
node.setCountry("SPAIN");

            
dao.create(node);
        }

        List<
NodeEntitylstNode = ((MusicDAO<NodeEntity>) BeanFactory.getDao())
                .
readAll(NodeEntity.class);

        for (
NodeEntity nodeEntity lstNode) {
            
log.debug("-->" nodeEntity.toString());
        }

    }

    @
SuppressWarnings("unchecked")
    @
Transactional
    
public void testCreateRoom() throws Exception {
        
log.debug(" --> DAO.");

        
MusicDAO<RoomEntitydao = (MusicDAO<RoomEntity>) BeanFactory.getDao();
        List<
NodeEntitylstNode = ((MusicDAO<NodeEntity>) BeanFactory.getDao())
                .
readAll(NodeEntity.class);
        
log.debug(" --> INCIO CARA DE ROOMS.");

        
String[] arrayNombreRoom = { "ROOM_1""ROOM_2""ROOM_3""ROOM_4",
                
"ROOM_5""ROOM_6""ROOM_7""ROOM_8""ROOM_9""ROOM_10",

        };

        for (
NodeEntity nodeEntity lstNode) {

            for (
String valueNombre arrayNombreRoom) {

                
RoomEntity roomEntity = new RoomEntity();
                
roomEntity.setNode(nodeEntity);
                
roomEntity.setName(nodeEntity.getName().trim() + " - "
                        
valueNombre);

                
log.debug("--> " roomEntity.toString());

                
dao.create(roomEntity);

            }
        }

    }

........ 
La inserción en NODE se realiza correctamente, pero en ROOM... falla, diciendome que la tabla no existe en BBDD, ASEGURO, JURO y PERJURO que las tablas antes de la ejecución EXISTIAN pero han desaparecido. Os adjunto las entidades:
Código PHP:

@Entity
@Table(name "NODE")
public class 
NodeEntity implements com.server.util.MyEntity{

    @
Id
    
@GeneratedValue
    
@Column(name "ID"unique trueupdatable false)
    private 
Integer id null;

    @
Column(name "SHORT_NAME"length 50unique trueupdatable true)
    private 
String shortName null;

    @
Column(name "NAME"length 50unique trueupdatable true)
    private 
String name null;

    @
Column(name "COUNTRY"length 50unique trueupdatable false)
    private 
String country null
Código PHP:

@Entity
@Table(name "ROOM")
public class 
RoomEntity implements com.server.util.MyEntity{

    @
Id
    
@GeneratedValue(strategy=GenerationType.AUTO)
    @
Column(name "ID"nullable false uniquetrue)
    private 
Integer id null;

    @
ManyToOnecascadeCascadeType.ALLtargetEntity=NodeEntity.class )
    @
JoinColumn(name "NODE_ID")
    private 
NodeEntity nodenull;
    
    @
Column(name "NAME"length 50unique truenullable falseupdatable true)    
    private 
String name null

MUCHAS GRACIAS DE ANTE MANO.