Duvida com table e gravação no banco

2 respostas
G

Bom dia, estou tendo a seguinde dificuldade, tenho uma classe aplicação e essa classe aplicação possui uma coleção de parametros e quando eu adiciono a aplicação adiciono os parametro em uma table juntos, ate ai tudo bem, consigo normalmente dessa forma:

public void insert() {
		Application app = new Application();

		app.setName(nameApplication.getText());
		app.setDescription(descriptionApplication.getText());

		int agentSelect = agentCombo.getSelectionIndex();
		Agent agent = agentDao.getAgent(Integer.parseInt(agentCombo.getData(
				agentCombo.getItem(agentSelect)).toString()));

		app.setAgent(agent);

		int serverSelect = serverCombo.getSelectionIndex();
		Server server = serverDao.getServer(Integer.parseInt(serverCombo
				.getData(serverCombo.getItem(serverSelect)).toString()));

		app.setServer(server);
		ApplicationDAO appDao = new ApplicationDAO();
		
		Parameter param = new Parameter();
		ParametroDAO paramDao = new ParametroDAO();
		Collection<Parameter> listParameter = new HashSet<Parameter>();
		for (TableItem t : tableValue.getItems()) {
			param.setValue(t.getText(1));
			param.setName(t.getText(0));
			param.setAgent(agent);
			param.setApplication(appDao.getLastCode());
			paramDao.insert(param);
			listParameter.add(param);
		}

		app.setParameters(listParameter);
		
		appDao.insert(app);

dai quando estou tentando atualizar essa aplicação preencho a tabela de parametros setando a data dos itens

public void fillTable() {
		Collection<Parameter> itemsParameter = app.getParameters();
		for (Parameter p : itemsParameter) {
			item = new TableItem(tableValue, SWT.NONE);
			item.setText(new String[] { p.getName(), p.getValue() });
			item.setData(p);
		}

	}

porem quando vou atualizar da o seguinte erro

22063 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1407, SQLState: 72000
22063 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ORA-01407: cannot update ("GI"."PARAMETER"."CODE_APPLICATION") to NULL

22063 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1407, SQLState: 72000
22063 [main] ERROR org.hibernate.util.JDBCExceptionReporter - ORA-01407: cannot update ("GI"."PARAMETER"."CODE_APPLICATION") to NULL

22063 [main] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126)
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:169)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:366)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
	at br.com.md2net.gi.dao.ApplicationDAO.update(ApplicationDAO.java:93)
	at br.com.md2net.gi.dialogs.ApplicationDialog.update(ApplicationDialog.java:386)
	at br.com.md2net.gi.dialogs.ApplicationDialog.okPressed(ApplicationDialog.java:287)
	at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:472)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at br.com.md2net.gi.application.Application.start(Application.java:23)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Caused by: java.sql.BatchUpdateException: ORA-01407: cannot update ("GI"."PARAMETER"."CODE_APPLICATION") to NULL

	at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:367)
	at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:8739)
	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
	... 38 more

esse é o metodo que uso para atualizar ou melhor tentar atualizar

public void update() {
		Application app = new Application();
		ApplicationDAO appDao = new ApplicationDAO();

		String application = TableApplicationView.table.getItem(
				TableApplicationView.table.getSelectionIndex()).getText(0);
		app = appDao.getAplication(Integer.parseInt(TableApplicationView.table
				.getItem(TableApplicationView.table.getSelectionIndex())
				.getData(application).toString()));

		app.setName(nameApplication.getText());
		app.setDescription(descriptionApplication.getText());

		int agentSelect = agentCombo.getSelectionIndex();
		Agent agent = agentDao.getAgent(Integer.parseInt(agentCombo.getData(
				agentCombo.getItem(agentSelect)).toString()));

		app.setAgent(agent);

		int serverSelect = serverCombo.getSelectionIndex();
		Server server = serverDao.getServer(Integer.parseInt(serverCombo
				.getData(serverCombo.getItem(serverSelect)).toString()));

		app.setServer(server);
		
		Parameter param = new Parameter();
		ParametroDAO paramDao = new ParametroDAO();
		Collection<Parameter> listParameter = new HashSet<Parameter>();
		for (TableItem t : tableValue.getItems()) {
			if(t.getData() == null){
				param.setValue(t.getText(1));
				param.setName(t.getText(0));
				param.setAgent(agent);
				param.setApplication(app);
				paramDao.update(param);
				listParameter.add(param);
			}
		}

		app.setParameters(listParameter);

		appDao.update(app);

2 Respostas

leorbarbosa

Veja quais são os valores que estão sendo passados em run-time:

ORA-01407: cannot update (string) to NULL
Cause: An attempt was made to update a table column “USER”.“TABLE”.“COLUMN” with a NULL value.

For example, if you enter:

connect scott/tiger update table a (a1 number not null); insert into a values (null);

Oracle returns:

ORA-01407 cannot update (“SCOTT”.“A”.“A1”) to NULL

which means you cannot update the column “SCOTT”.“A”.“A1” to NULL.
Action: Retry the operation with a value other than NULL.

G

leorbarbosa:
Veja quais são os valores que estão sendo passados em run-time:

ORA-01407: cannot update (string) to NULL
Cause: An attempt was made to update a table column “USER”.“TABLE”.“COLUMN” with a NULL value.

For example, if you enter:

connect scott/tiger update table a (a1 number not null); insert into a values (null);

Oracle returns:

ORA-01407 cannot update (“SCOTT”.“A”.“A1”) to NULL

which means you cannot update the column “SCOTT”.“A”.“A1” to NULL.
Action: Retry the operation with a value other than NULL.

mas o problema é que nao tem atributo nulo

Criado 13 de novembro de 2009
Ultima resposta 13 de nov. de 2009
Respostas 2
Participantes 2