Hello les gens,
Comment définit on généralement une méthode create (sur l'interface home) et la méthode ejbCreate (sur le bean) quand la clé de la table est de type identity ?
Lorsque je désire créer un enregistrement sur la table, je me prends un:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Caused by: java.sql.SQLException: A value cannot be specified for column "ID" which is defined as GENERATED ALWAYS. DSRA0010E: Etat SQL = 428C9, Code d'erreur = -798
	at com.ibm.db2.jcc.b.id.e(id.java:1640)
	at com.ibm.db2.jcc.b.id.a(id.java:1229)
	at com.ibm.db2.jcc.c.fb.h(fb.java:149)
	at com.ibm.db2.jcc.c.fb.a(fb.java:43)
	at com.ibm.db2.jcc.c.s.a(s.java:30)
	at com.ibm.db2.jcc.c.wb.g(wb.java:152)
	at com.ibm.db2.jcc.b.id.n(id.java:1209)
	at com.ibm.db2.jcc.b.jd.eb(jd.java:1779)
	at com.ibm.db2.jcc.b.jd.a(jd.java:2232)
	at com.ibm.db2.jcc.b.jd.W(jd.java:537)
	at com.ibm.db2.jcc.b.jd.executeUpdate(jd.java:520)
	at com.ibm.ws.rsadapter.cci.WSResourceAdapterBase.pmiExecuteUpdate(WSResourceAdapterBase.java:715)
	at com.ibm.ws.rsadapter.cci.WSResourceAdapterBase.executeUpdate(WSResourceAdapterBase.java:584)
	at com.laOuJeBosse.leProjet.ejb.entity.websphere_deploy.DB2UDBNT_V8_1.FBL_COMPUT_ACFEE_FEES_FACTBeanFunctionSet_76811a3a.Create(FBL_COMPUT_ACFEE_FEES_FACTBeanFunctionSet_76811a3a.java:238)
	at com.laOuJeBosse.leProjet.ejb.entity.websphere_deploy.DB2UDBNT_V8_1.FBL_COMPUT_ACFEE_FEES_FACTBeanFunctionSet_76811a3a.execute(FBL_COMPUT_ACFEE_FEES_FACTBeanFunctionSet_76811a3a.java:872)
	at com.ibm.ws.rsadapter.cci.WSInteractionImpl.execute(WSInteractionImpl.java:538)
	at com.ibm.ws.rsadapter.cci.WSRelationalRAAdapter.executeCreate(WSRelationalRAAdapter.java:375)
	at com.ibm.ws.ejbpersistence.dataaccess.DataAccessRequestImpl.execute(DataAccessRequestImpl.java:191)
	... 16 more
---- Begin backtrace for Nested Throwables
com.ibm.db2.jcc.b.SqlException: An error occurred during implicit system action type "2".  Information returned for the error includes SQLCODE "-798", SQLSTATE "428C9" and message tokens "ID".
	at com.ibm.db2.jcc.b.id.e(id.java:1640)
	at com.ibm.db2.jcc.b.jd.a(jd.java:1716)
	at com.ibm.db2.jcc.c.fb.a(fb.java:200)
	at com.ibm.db2.jcc.c.fb.b(fb.java:88)
	at com.ibm.db2.jcc.c.s.b(s.java:60)
	at com.ibm.db2.jcc.c.xb.d(xb.java:293)
	at com.ibm.db2.jcc.b.jd.bb(jd.java:1709)
	at com.ibm.db2.jcc.b.jd.eb(jd.java:1780)
	at com.ibm.db2.jcc.b.jd.a(jd.java:2232)
	at com.ibm.db2.jcc.b.jd.W(jd.java:537)
	at com.ibm.db2.jcc.b.jd.executeUpdate(jd.java:520)
	at com.ibm.ws.rsadapter.cci.WSResourceAdapterBase.pmiExecuteUpdate(WSResourceAdapterBase.java:715)
	at com.ibm.ws.rsadapter.cci.WSResourceAdapterBase.executeUpdate(WSResourceAdapterBase.java:584)
	at com.laOuJeBosse.leProjet.ejb.entity.websphere_deploy.DB2UDBNT_V8_1.FBL_COMPUT_ACFEE_FEES_FACTBeanFunctionSet_76811a3a.Create(FBL_COMPUT_ACFEE_FEES_FACTBeanFunctionSet_76811a3a.java:238)
	at com.laOuJeBosse.leProjet.ejb.entity.websphere_deploy.DB2UDBNT_V8_1.FBL_COMPUT_ACFEE_FEES_FACTBeanFunctionSet_76811a3a.execute(FBL_COMPUT_ACFEE_FEES_FACTBeanFunctionSet_76811a3a.java:872)
	at com.ibm.ws.rsadapter.cci.WSInteractionImpl.execute(WSInteractionImpl.java:538)
	at com.ibm.ws.rsadapter.cci.WSRelationalRAAdapter.executeCreate(WSRelationalRAAdapter.java:375)
	at com.ibm.ws.ejbpersistence.dataaccess.DataAccessRequestImpl.execute(DataAccessRequestImpl.java:191)
	at com.ibm.ws.ejbpersistence.beanextensions.ConcreteBeanStatefulInstanceExtensionImpl.executeCreate(ConcreteBeanStatefulInstanceExtensionImpl.java:1999)
	at com.ibm.ws.ejbpersistence.beanextensions.CBNotExistState.ejbCreate(CBNotExistState.java:38)
	at com.ibm.ws.ejbpersistence.beanextensions.ConcreteBeanStatefulInstanceExtensionImpl.ejbPostCreate(ConcreteBeanStatefulInstanceExtensionImpl.java:331)
	at com.laOuJeBosse.leProjet.ejb.entity.ConcreteFBL_COMPUT_ACFEE_FEES_FACT_76811a3a.ejbPostCreate(ConcreteFBL_COMPUT_ACFEE_FEES_FACT_76811a3a.java:145)
	at com.laOuJeBosse.leProjet.ejb.entity.EJSCMPFBL_COMPUT_ACFEE_FEES_FACTHomeBean_76811a3a.create_Local(EJSCMPFBL_COMPUT_ACFEE_FEES_FACTHomeBean_76811a3a.java:30)
	at com.laOuJeBosse.leProjet.ejb.entity.EJSLocalCMPFBL_COMPUT_ACFEE_FEES_FACTHome_76811a3a.create(EJSLocalCMPFBL_COMPUT_ACFEE_FEES_FACTHome_76811a3a.java:86)
	at com.laOuJeBosse.leProjet.ejb.session.GestionCommissionBean.computeFeesOnAccount(GestionCommissionBean.java:131)
	at com.laOuJeBosse.leProjet.ejb.session.EJSRemoteStatelessGestionCommission_411998cc.computeFeesOnAccount(EJSRemoteStatelessGestionCommission_411998cc.java:28)
	at com.laOuJeBosse.leProjet.ejb.session._GestionCommission_Stub.computeFeesOnAccount(_GestionCommission_Stub.java:270)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:226)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
---- Begin backtrace for Nested Throwables
Voici un extrait de mon code:
Interface home:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
/**
         * Creates an instance from a key for Entity Bean:
         * FBL_COMPUT_ACFEE_FEES_FACT
         */
	public com.laOuJeBosse.leProjet.ejb.entity.FBL_COMPUT_ACFEE_FEES_FACTLocal create(
			java.lang.Long id) throws javax.ejb.CreateException;
 
public com.laOuJeBosse.leProjet.ejb.entity.FBL_COMPUT_ACFEE_FEES_FACTLocal create(
			String TICKET, Timestamp INSERT_TIME, String F_BPID, Long F_ACNO,
			String F_ISIN, String F_GENDATE, String F_OTHRDATE, String F_NAME,
			String F_TYPE, String BILLINGDATE, String UPLOADER,
			String COMMITTER, Character REJECTED, String CAUSE,
			String RANGE_TYPE, Integer RANGE_LEVEL, Integer RANGE_TOKEN,
			Double FEE_AMOUNT, Character ALLFEES_LOADED, String ALLFEES_LOADER)
			throws javax.ejb.CreateException;
...
Mon bean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
...
/**
         * ejbCreate
         */
	public java.lang.Long ejbCreate(java.lang.Long id)
			throws javax.ejb.CreateException {
		// setId(id); c'est ALWAYS GENERATED on a dit!
		return null;
	}
 
	/**
         * ejbPostCreate
         */
	public void ejbPostCreate(java.lang.Long id)
			throws javax.ejb.CreateException {
	}
 
public void ejbPostCreate(String TICKET, Timestamp INSERT_TIME,
			String F_BPID, Long F_ACNO, String F_ISIN, String F_GENDATE,
			String F_OTHRDATE, String F_NAME, String F_TYPE,
			String BILLINGDATE, String UPLOADER, String COMMITTER,
			Character REJECTED, String CAUSE, String RANGE_TYPE,
			Integer RANGE_LEVEL, Integer RANGE_TOKEN, Double FEE_AMOUNT,
			Character ALLFEES_LOADED, String ALLFEES_LOADER)
			throws javax.ejb.CreateException {
	}
 
	public java.lang.Long ejbCreate(String TICKET, Timestamp INSERT_TIME,
			String F_BPID, Long F_ACNO, String F_ISIN, String F_GENDATE,
			String F_OTHRDATE, String F_NAME, String F_TYPE,
			String BILLINGDATE, String UPLOADER, String COMMITTER,
			Character REJECTED, String CAUSE, String RANGE_TYPE,
			Integer RANGE_LEVEL, Integer RANGE_TOKEN, Double FEE_AMOUNT,
			Character ALLFEES_LOADED, String ALLFEES_LOADER)
			throws javax.ejb.CreateException {
		setTicket(TICKET);
		setInsert_time(INSERT_TIME);
		setF_bpid(F_BPID);
		setF_acno(F_ACNO);
		setF_isin(F_ISIN);
		setF_gendate(F_GENDATE);
		setF_othrdate(F_OTHRDATE);
		setF_name(F_NAME);
		setF_type(F_TYPE);
		setBillingdate(BILLINGDATE);
		setUploader(UPLOADER);
		setCommitter(COMMITTER);
		setRejected(REJECTED);
		setCause(CAUSE);
		setRange_type(RANGE_TYPE);
		setRange_level(RANGE_LEVEL);
		setRange_token(RANGE_TOKEN);
		setFee_amount(FEE_AMOUNT);
		setAllfees_loaded(ALLFEES_LOADED);
		setAllfees_loader(ALLFEES_LOADER);
		return null;
...
Je sais que cette version des ejb est pour le moins très "lourde", j’espère seulement trouver quelqu'un qui puisse m'aider.
Merci pour toutes vos contributions.