mais ID doit être NOT_NULL non ?Envoyé par decksroy
mais ID doit être NOT_NULL non ?Envoyé par decksroy
Ben oui ID = NOT NULL ! ouah c'est vraiment bizarre !
Mais peut etre que c'est a cause de la cle compose :
ID_COMPANY,ID_USER,ID_EXPENSES_REPORT
ou alors c'est du saveOrUpdate() ,
ou alors..
J'en reviens toujours pas que j'arrive a creer un enregistrement
sans ID, pourtant je l'ai bien mis a notnull et c'est une clé primaire !
pourrais tu m'en dire un peu plus : es du a la fonction saveOrUpdate()?
Merci pour ta patience !
il faudrait voir le fichier de mapping alors
voici le fichier ExpensesReport.hbm.xml:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.eurecia.service.expensesReport.ExpensesReport" table="EXPENSES_REPORT_EA"> <composite-id name="id" class="com.eurecia.service.expensesReport.ExpensesReportId"> <key-property name="idCompany" type="java.lang.String"> <column name="ID_COMPANY" scale="50" precision="0" not-null="true" sql-type="varchar" /> </key-property> <key-property name="idUser" type="java.lang.String"> <column name="ID_USER" scale="50" precision="0" not-null="true" sql-type="varchar" /> </key-property> <key-property name="idExpensesReport" type="java.lang.String"> <column name="ID_EXPENSES_REPORT" scale="50" precision="0" not-null="true" sql-type="varchar" /> </key-property> </composite-id> <property name="description" type="java.lang.String"> <column name="DESCRIPTION" scale="255" precision="0" not-null="true" sql-type="varchar" /> </property> <property name="ref" type="java.lang.String"> <column name="REF" scale="50" precision="0" not-null="false" sql-type="varchar" /> </property> <property name="status" type="java.lang.String"> <column name="STATUS" scale="10" precision="0" not-null="true" sql-type="varchar" /> </property> <property name="periodStart" type="java.util.Date"> <column name="PERIOD_START" scale="19" precision="0" not-null="true" sql-type="datetime" /> </property> <property name="periodEnd" type="java.util.Date"> <column name="PERIOD_END" scale="19" precision="0" not-null="true" sql-type="datetime" /> </property> <property name="commentEmployee" type="java.lang.String"> <column name="COMMENT_EMPLOYEE" scale="8000" precision="0" not-null="false" sql-type="varchar" /> </property> <property name="commentValidator" type="java.lang.String"> <column name="COMMENT_VALIDATOR" scale="8000" precision="0" not-null="false" sql-type="varchar" /> </property> <property name="totalAmountHT" type="java.lang.Double"> <column name="TOTAL_AMOUNT_HT" scale="10" precision="2" not-null="true" sql-type="decimal"/> </property> <property name="totalAmountVAT" type="java.lang.Double"> <column name="TOTAL_AMOUNT_VAT" scale="10" precision="2" not-null="true" sql-type="decimal"/> </property> <property name="totalAmountTTC" type="java.lang.Double"> <column name="TOTAL_AMOUNT_TTC" scale="10" precision="2" not-null="true" sql-type="decimal"/> </property> <property name="totalAmountCurrency" type="java.lang.String"> <column name="TOTAL_AMOUNT_CURRENCY" scale="4" precision="0" not-null="true" sql-type="varchar" /> </property> <many-to-one name="attachedFile" class="com.eurecia.backoffice.EureciaFile" cascade="all"> <column name="ID_ATTACHED_FILE"/> </many-to-one> <property name="fiscalPower" type="java.lang.String"> <column name="FISCAL_POWER" scale="10" precision="0" not-null="false" sql-type="varchar" /> </property> <property name="dateReportSubmission" type="java.util.Date"> <column name="DATE_REPORT_SUBMISSION" scale="19" precision="0" not-null="false" sql-type="datetime" /> </property> <property name="userCreate" type="java.lang.String"> <column name="USER_CREATE" scale="255" precision="0" not-null="true" sql-type="varchar" /> </property> <property name="dateCreate" type="java.util.Date"> <column name="DATE_CREATE" scale="19" precision="0" not-null="true" sql-type="datetime" /> </property> <property name="userUpdate" type="java.lang.String"> <column name="USER_UPDATE" scale="255" precision="0" not-null="false" sql-type="varchar" /> </property> <property name="dateUpdate" type="java.util.Date"> <column name="DATE_UPDATE" scale="19" precision="0" not-null="false" sql-type="datetime" /> </property> <set name="items" table="EXPENSES_REPORT_ITEM_EA" cascade="all" order-by="DATE,REF"> <key> <column name="ID_COMPANY"/> <column name="ID_USER"/> <column name="ID_EXPENSES_REPORT"/> </key> <composite-element class="com.eurecia.service.expensesReport.ExpensesReportItem"> <property name="id" type="java.lang.String"> <column name="ID_EXPENSES_REPORT_ITEM" scale="50" precision="0" not-null="true" sql-type="varchar" /> </property> <property name="date" type="java.util.Date"> <column name="DATE" scale="19" precision="0" not-null="true" sql-type="datetime" /> </property> <property name="description" type="java.lang.String"> <column name="DESCRIPTION" scale="255" precision="0" not-null="true" sql-type="varchar" /> </property> <property name="comment" type="java.lang.String"> <column name="COMMENT" scale="8000" precision="0" not-null="false" sql-type="varchar" /> </property> <property name="ref" type="java.lang.String"> <column name="REF" scale="50" precision="0" not-null="false" sql-type="varchar" /> </property> <property name="type" type="java.lang.String"> <column name="TYPE" scale="10" precision="0" not-null="true" sql-type="varchar" /> </property> <property name="amountHT" type="java.lang.Double"> <column name="AMOUNT_HT" scale="10" precision="2" not-null="true" sql-type="decimal"/> </property> <property name="amountVAT" type="java.lang.Double"> <column name="AMOUNT_VAT" scale="10" precision="2" not-null="true" sql-type="decimal"/> </property> <property name="amountTTC" type="java.lang.Double"> <column name="AMOUNT_TTC" scale="10" precision="2" not-null="true" sql-type="decimal"/> </property> <property name="amountCurrency" type="java.lang.String"> <column name="AMOUNT_CURRENCY" scale="4" precision="0" not-null="true" sql-type="varchar" /> </property> <property name="km" type="java.lang.Double"> <column name="KM" scale="10" precision="2" not-null="false" sql-type="varchar" /> </property> <property name="imputationStructureItemId" type="java.lang.String"> <column name="ID_IMPUTATION_STRUCTURE_ITEM" scale="50" not-null="false" sql-type="varchar"/> </property> <property name="invoicable" type="java.lang.Boolean"> <column name="INVOICABLE" scale="1" precision="0" not-null="true" sql-type="decimal" /> </property> <many-to-one name="attachedFile" class="com.eurecia.backoffice.EureciaFile" cascade="all"> <column name="ID_ATTACHED_FILE"/> </many-to-one> </composite-element> </set> </class> </hibernate-mapping>
Peut etre que mon fichier hibernate.cfg.xml pourra t'aider :
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- DB connection <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1/eurecia</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property --> <property name="hibernate.connection.datasource">java:/eurecia</property> <!-- property name="hibernate.transaction.factory_class">net.sf.hibernate.transaction.JTATransactionFactory</property> <property name="hibernate.transaction.manager_lookup_class">net.sf.hibernate.transaction.JBossTransactionManagerLookup</property --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.use_sql_comments">false</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.use_sql_comments">false</property> <!-- Enable Hibernate's automatic session context management --> <!-- <property name="current_session_context_class">thread</property>--> <!-- Disable the second-level cache --> <!-- <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> --> <!--### Apache DBCP Connection Pool ###--> <!--connection pool--> <property name="hibernate.dbcp.maxActive">20</property> <property name="hibernate.dbcp.whenExhaustedAction">1</property> <property name="hibernate.dbcp.maxWait">20000</property> <property name="hibernate.dbcp.maxIdle">10</property> <!-- prepared statement cache--> <property name="hibernate.dbcp.ps.maxActive">10</property> <property name="hibernate.dbcp.ps.whenExhaustedAction">1</property> <property name="hibernate.dbcp.ps.maxWait">20000</property> <property name="hibernate.dbcp.ps.maxIdle">10</property> <!-- optional query to validate pooled connections:--> <property name="hibernate.dbcp.validationQuery">select 1</property> <property name="hibernate.dbcp.testOnBorrow">true</property> <property name="hibernate.dbcp.testOnReturn">true</property> <!-- Mapping files --> <mapping resource="com/eurecia/autoExecution/AutoExecution.hbm.xml" /> <mapping resource="com/eurecia/backoffice/User.hbm.xml" /> <mapping resource="com/eurecia/backoffice/Contact.hbm.xml" /> <mapping resource="com/eurecia/backoffice/Activity.hbm.xml" /> <mapping resource="com/eurecia/backoffice/Company.hbm.xml" /> <mapping resource="com/eurecia/backoffice/Profile.hbm.xml" /> <mapping resource="com/eurecia/backoffice/Service.hbm.xml" /> <mapping resource="com/eurecia/backoffice/FormatDef.hbm.xml" /> <mapping resource="com/eurecia/backoffice/ListValue.hbm.xml" /> <mapping resource="com/eurecia/backoffice/CurrencyScale.hbm.xml" /> <mapping resource="com/eurecia/backoffice/KilometricScale.hbm.xml" /> <mapping resource="com/eurecia/backoffice/ImputationStructure.hbm.xml" /> <mapping resource="com/eurecia/backoffice/EureciaFile.hbm.xml" /> <mapping resource="com/eurecia/service/calendar/Resource.hbm.xml" /> <mapping resource="com/eurecia/service/calendar/CalendarModel.hbm.xml" /> <mapping resource="com/eurecia/service/calendar/Calendar.hbm.xml" /> <mapping resource="com/eurecia/service/vacations/VacationType.hbm.xml" /> <mapping resource="com/eurecia/service/vacations/VacationRequest.hbm.xml" /> <mapping resource="com/eurecia/service/vacations/VacationAccumulation.hbm.xml" /> <mapping resource="com/eurecia/service/documents/DocumentSpace.hbm.xml" /> <mapping resource="com/eurecia/service/documents/DocumentFolder.hbm.xml" /> <mapping resource="com/eurecia/service/documents/DocumentFile.hbm.xml" /> <mapping resource="com/eurecia/service/payroll/model/PayrollModel.hbm.xml" /> <mapping resource="com/eurecia/service/payroll/model/Group.hbm.xml" /> <mapping resource="com/eurecia/service/payroll/model/Field.hbm.xml" /> <mapping resource="com/eurecia/service/payroll/grid/PayrollGrid.hbm.xml" /> <mapping resource="com/eurecia/service/expensesReport/ExpensesReport.hbm.xml" /> <mapping resource="com/eurecia/service/directory/CompanyCategory.hbm.xml" /> <mapping resource="com/eurecia/service/directory/UserCategory.hbm.xml" /> </session-factory> </hibernate-configuration>
Bon j'ai trouve une solution de bricolage en utilisant Thread.sleep()!
Mais bon je sais pas si c'est vraiment propre alors si t'as une autre solution je prends!
En regardant la doc d'Hibernate il semble qu'il y ait des soucis entre clef-composite et saveOrUpdate c'est peut-être à toi de déterminer s'il faut faire un save ou un update
Bon je vais essayer de regarder la doc !
Merci pour ton aide, j'y ai vu un peu plus clair !
Partager