Foros del Web » Programación para mayores de 30 ;) » Java »

[JPA] Introducir datos en llave foranea : MySql

Estas en el tema de [JPA] Introducir datos en llave foranea : MySql en el foro de Java en Foros del Web. Código: try { DAOFactory daoFactory = DAOFactory.getInstance(); DAO<Cliente, Integer> userDAO = daoFactory.getDAO("Bailarinas.dao.UserDAO"); Cliente usuario = new Cliente(); System.out.println("Ingrese el nombre"); usuario.setNombres(in.next()); System.out.println("Ingrese los apellidos"); usuario.setApellidos(in.next()); ...
  #1 (permalink)  
Antiguo 01/11/2011, 22:39
 
Fecha de Ingreso: octubre-2011
Mensajes: 7
Antigüedad: 12 años, 6 meses
Puntos: 0
[JPA] Introducir datos en llave foranea : MySql

Código:
try {

			DAOFactory daoFactory = DAOFactory.getInstance();

			DAO<Cliente, Integer> userDAO = daoFactory.getDAO("Bailarinas.dao.UserDAO");

			Cliente usuario = new Cliente();
			System.out.println("Ingrese el nombre");
			usuario.setNombres(in.next());
			
			System.out.println("Ingrese los apellidos");
			usuario.setApellidos(in.next());
			
			System.out.println("Ingrese la cedula");
			usuario.setCedula(in.next());
			
			System.out.println("Ingrese el email");
			usuario.setEmail(in.next());
			
			System.out.println("Ingrese el telefono");
			usuario.setTelefono(in.next());
			
			//Campo de ingresos
			Ingreso ingreso = new Ingreso();
			List<Ingreso> in = new ArrayList<Ingreso>();
			ingreso.setAnio(201);
			ingreso.setMes(0);
			ingreso.setDia(82);
			in.add(ingreso);
			
			usuario.setIngresos(in);
			
			userDAO.insert(usuario);

		} catch (SystemException e) {
			System.out.println(e.getMessage());
		}
El metodo insert funciona bien , lo dejo para que miren aun asi
Código:
	public void insert(Entidad entidad) {
		factory = Persistence.createEntityManagerFactory("Bailarinas");
		entityManager = factory.createEntityManager();
		transaction = entityManager.getTransaction();
		transaction.begin();
		entityManager.persist(entidad);
		transaction.commit();
		entityManager.close();
	}
Necesito ayuda con esto:
List<Ingreso> in = new ArrayList<Ingreso>();

Le puse la llave foranea a un campo de la tabla Cliente , y ese campo tiene la tabla Ingreso , el problema es que no se como o que tipo debe ser para meterlo a la lista.

El error que me bota es este (Compilador ECLIPSE):
Cita:

[EL Info]: 2011-11-01 23:29:43.551--ServerSession(13419912)--EclipseLink, version: Eclipse Persistence Services - 1.1.1.v20090430-r4097
[EL Info]: 2011-11-01 23:29:45.451--ServerSession(13419912)--file:/G:/Base%20de%20datos/workspace/Bailarinas/build/classes/-Bailarinas login successful
Exception in thread "main" javax.persistence.RollbackException: java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: Bailarinas.entity.Ingreso@530cf2.
at org.eclipse.persistence.internal.jpa.transaction.E ntityTransactionImpl.commitInternal(EntityTransact ionImpl.java:102)
at org.eclipse.persistence.internal.jpa.transaction.E ntityTransactionImpl.commit(EntityTransactionImpl. java:63)
at Bailarinas.dao.DAO.insert(DAO.java:23)
at Bailarinas.test.Main.main(Main.java:53)
Caused by: java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: Bailarinas.entity.Ingreso@530cf2.
at org.eclipse.persistence.internal.sessions.UnitOfWo rkImpl.discoverAndPersistUnregisteredNewObjects(Un itOfWorkImpl.java:4015)
at org.eclipse.persistence.mappings.CollectionMapping .cascadeDiscoverAndPersistUnregisteredNewObjects(C ollectionMapping.java:324)
at org.eclipse.persistence.internal.descriptors.Objec tBuilder.cascadeDiscoverAndPersistUnregisteredNewO bjects(ObjectBuilder.java:1511)
at org.eclipse.persistence.internal.sessions.UnitOfWo rkImpl.discoverAndPersistUnregisteredNewObjects(Un itOfWorkImpl.java:4018)
at org.eclipse.persistence.internal.sessions.Repeatab leWriteUnitOfWork.discoverUnregisteredNewObjects(R epeatableWriteUnitOfWork.java:182)
at org.eclipse.persistence.internal.sessions.UnitOfWo rkImpl.calculateChanges(UnitOfWorkImpl.java:628)
at org.eclipse.persistence.internal.sessions.UnitOfWo rkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImp l.java:1386)
at org.eclipse.persistence.internal.sessions.Repeatab leWriteUnitOfWork.commitRootUnitOfWork(RepeatableW riteUnitOfWork.java:160)
at org.eclipse.persistence.internal.sessions.UnitOfWo rkImpl.commitAndResume(UnitOfWorkImpl.java:1059)
at org.eclipse.persistence.internal.jpa.transaction.E ntityTransactionImpl.commitInternal(EntityTransact ionImpl.java:84)
... 3 more
[EL Warning]: 2011-11-01 23:29:45.955--UnitOfWork(20003078)--java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: Bailarinas.entity.Ingreso@530cf2.

PD: Si es necesario subo el proyecto y gracias por adelantado.

Etiquetas: jpa, llave, sql, foreignkey
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:42.