bonjour a tout
j ai deux tables avec les mêmes cles primaires. Remarque que c est pas moi le dbA et quand je fais l association entre les deux j ai l erreur suivante
voici mes pojosorg.hibernate.MappingException: Foreign key (FKFB4D24995E3F6999:tpp_info [branch_cd,account_cd,client_nbr,ap_seq_nbr])) must have same number of columns as the referenced primary key (TACC_PARTY_NAME [branch_cd,account_cd,client_nbr,ap_seq_nbr])
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:90)
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:73)
at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1263)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1170)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1201)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1171)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:425)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:284)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
at ca.penson.bpsa.BPSAManagerFactory.<clinit>(BPSAManagerFactory.java:18)
at ca.penson.xml2cra.struts.EditReceiptAction.retrieveAccount(EditReceiptAction.java:720)
at ca.penson.xml2cra.struts.EditReceiptAction.search_onClick(EditReceiptAction.java:830)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.cc.framework.adapter.struts.ActionUtil.handleFormAction(Unknown Source)
at com.cc.framework.adapter.struts.FWAction.handleFormAction(Unknown Source)
at com.cc.framework.adapter.struts.ActionUtil.execute(Unknown Source)
at com.cc.framework.adapter.struts.FWAction.execute(Unknown Source)
at com.cc.framework.adapter.struts.FWAction.execute(Unknown Source)
at com.cc.framework.adapter.struts.RequestProcessorUtil.processAction(Unknown Source)
at com.cc.framework.adapter.struts.FWTilesRequestProcessor.processActionPerform(Unknown Source)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:581)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:420)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:595)
et
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 package pojo; import java.io.Serializable; public class InfoClient implements Serializable{ /** * */ private static final long serialVersionUID = 1L; // primary key private String branchCd; private String accountCd; private String clientNbr; private Short apSeqNbr; private String shortNm; private String firstName; private String lastName; private PartyName partyName; public PartyName getPartyName() { return partyName; } public void setPartyName(PartyName partyName) { this.partyName = partyName; } public String getBranchCd() { return branchCd; } public void setBranchCd(String branchCd) { this.branchCd = branchCd; } public String getAccountCd() { return accountCd; } public void setAccountCd(String accountCd) { this.accountCd = accountCd; } public String getClientNbr() { return clientNbr; } public void setClientNbr(String clientNbr) { this.clientNbr = clientNbr; } public Short getApSeqNbr() { return apSeqNbr; } public void setApSeqNbr(Short apSeqNbr) { this.apSeqNbr = apSeqNbr; } public String getShortNm() { return shortNm; } public void setShortNm(String shortNm) { this.shortNm = shortNm; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((accountCd == null) ? 0 : accountCd.hashCode()); result = prime * result + ((apSeqNbr == null) ? 0 : apSeqNbr.hashCode()); result = prime * result + ((branchCd == null) ? 0 : branchCd.hashCode()); result = prime * result + ((clientNbr == null) ? 0 : clientNbr.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; InfoClient other = (InfoClient) obj; if (accountCd == null) { if (other.accountCd != null) return false; } else if (!accountCd.equals(other.accountCd)) return false; if (apSeqNbr == null) { if (other.apSeqNbr != null) return false; } else if (!apSeqNbr.equals(other.apSeqNbr)) return false; if (branchCd == null) { if (other.branchCd != null) return false; } else if (!branchCd.equals(other.branchCd)) return false; if (clientNbr == null) { if (other.clientNbr != null) return false; } else if (!clientNbr.equals(other.clientNbr)) return false; return true; } }
et mes hbm
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 package pojo; import java.io.Serializable; public class PartyName implements Serializable { private static final long serialVersionUID = 1L; // primary key private String branchCd; private String accountCd; private String clientNbr; private Short apSeqNbr; // fields private String languageCd; private String socSecTaxCd; private String socSecNbr; public String getBranchCd() { return branchCd; } public void setBranchCd(String branchCd) { this.branchCd = branchCd; } public String getAccountCd() { return accountCd; } public void setAccountCd(String accountCd) { this.accountCd = accountCd; } public String getClientNbr() { return clientNbr; } public void setClientNbr(String clientNbr) { this.clientNbr = clientNbr; } public Short getApSeqNbr() { return apSeqNbr; } public void setApSeqNbr(Short apSeqNbr) { this.apSeqNbr = apSeqNbr; } public String getLanguageCd() { return languageCd; } public void setLanguageCd(String languageCd) { this.languageCd = languageCd; } public String getSocSecTaxCd() { return socSecTaxCd; } public void setSocSecTaxCd(String socSecTaxCd) { this.socSecTaxCd = socSecTaxCd; } public String getSocSecNbr() { return socSecNbr; } public void setSocSecNbr(String socSecNbr) { this.socSecNbr = socSecNbr; } }
et
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="pojo"> <class name="InfoClient" table="tpp_info"> <composite-id > <key-property column="branch_cd" length="3" name="branchCd" type="string"/> <key-property column="account_cd" length="5" name="accountCd" type="string"/> <key-property column="client_nbr" length="4" name="clientNbr" type="string"/> <key-property column="ap_seq_nbr" length="5" name="apSeqNbr" type="java.lang.Short"/> </composite-id> <property column="short_nm" length="20" name="shortNm" not-null="false" type="string" /> <property column="first_sps_nm" length="20" name="firstName" not-null="false" type="string" /> <property column="last_sps_nm" length="20" name="lastName" not-null="false" type="string" /> <many-to-one name="partyName" class="pojo.PartyName" cascade="all" column="branch_cd,account_cd,client_nbr,ap_seq_nbr" unique="true" /> </class> </hibernate-mapping>donc il me dit que la clé étrangère devrait être égal
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="pojo"> <class name="PartyName" table="TACC_PARTY_NAME"> <composite-id > <key-property column="branch_cd" length="3" name="branchCd" type="string"/> <key-property column="account_cd" length="5" name="accountCd" type="string"/> <key-property column="client_nbr" length="4" name="clientNbr" type="string"/> <key-property column="ap_seq_nbr" length="5" name="apSeqNbr" type="java.lang.Short"/> </composite-id> <property column="language_cd" length="1" name="languageCd" not-null="false" type="string" /> <property column="soc_sec_tax_cd" length="1" name="socSecTaxCd" not-null="false" type="string" /> <property column="soc_sec_nbr" length="9" name="socSecNbr" not-null="false" type="string" /> </class> </hibernate-mapping>
a la clé primaire de l autre table ce qui est le cas.
Donc je vois pas ce qu'il veut.
Partager