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
org.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)
voici mes pojos
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
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 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
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>
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
 
<?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>
donc il me dit que la clé étrangère devrait être égal
a la clé primaire de l autre table ce qui est le cas.
Donc je vois pas ce qu'il veut.