Problème d'insertion avec clé composée
je travail avec hibernate hql
j'ai un problème pour l'insertion dans une table qui contient la notion de clé composé
voici le fichier UseCases.hbm
Code:
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
| <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 7 ao?t 2013 15:46:08 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.dq.hibernate.model.UseCases" table="USE_CASES">
<composite-id name="id" class="com.dq.hibernate.model.UseCasesId">
<key-property name="upaId" type="string">
<column name="UPA_ID" length="15" />
</key-property>
<key-property name="lndcasesId" type="string">
<column name="LNDCASES_ID" length="40" />
</key-property>
<key-property name="parcelNo" type="string">
<column name="PARCEL_NO" length="20" />
</key-property>
<key-property name="parcelBlk" type="string">
<column name="PARCEL_BLK" length="3" />
</key-property>
<key-property name="parcelGrp" type="string">
<column name="PARCEL_GRP" length="5" />
</key-property>
</composite-id>
<many-to-one name="urbanPlan" class="com.dq.hibernate.model.UrbanPlan" update="false" insert="false" fetch="select">
<column name="UPA_ID" length="15"/>
</many-to-one>
<many-to-one name="parcel" class="com.dq.hibernate.model.Parcel" update="false" insert="false" fetch="select">
<column name="PARCEL_NO" length="20" />
<column name="PARCEL_BLK" length="3" />
<column name="PARCEL_GRP" length="5" />
</many-to-one>
<many-to-one name="landCases" class="com.dq.hibernate.model.LandCases" update="false" insert="false" fetch="select">
<column name="LNDCASES_ID" length="40" not-null="true"/>
</many-to-one>
<property name="ucaseOrderno" type="string">
<column name="UCASE_ORDERNO" length="20" />
</property>
<property name="ucaseIssuedate" type="date">
<column name="UCASE_ISSUEDATE" length="7"/>
</property>
<property name="ucaseDocno" type="string">
<column name="UCASE_DOCNO" length="20" />
</property>
<property name="ucaseDesc" type="string">
<column name="UCASE_DESC" length="500" />
</property>
<property name="ucasedatesys" type="date">
<column name="UCASEDATESYS" length="7" />
</property>
<property name="ucaseIssuedatehj" type="string">
<column name="UCASE_ISSUEDATEHJ" length="10" />
</property>
<property name="ucaseNote" type="string">
<column name="UCASE_NOTE" length="500" />
</property>
</class>
</hibernate-mapping> |
la class UseCases.java
Code:
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 147 148 149 150 151 152 153 154 155
| package com.dq.hibernate.model;
// Generated 7 ao�t 2013 15:46:08 by Hibernate Tools 3.4.0.CR1
import java.util.Date;
/**
* UseCases generated by hbm2java
*/
public class UseCases implements java.io.Serializable {
private UseCasesId id;
private UrbanPlan urbanPlan;
private Parcel parcel;
private LandCases landCases;
private String ucaseOrderno;
private Date ucaseIssuedate;
private String ucaseDocno;
private String ucaseDesc;
private Date ucasedatesys;
private String ucaseIssuedatehj;
private String ucaseNote;
public UseCases() {
}
public UseCases(UrbanPlan urbanPlan, Parcel parcel,
LandCases landCases, String ucaseOrderno, Date ucaseIssuedate) {
this.urbanPlan = urbanPlan;
this.parcel = parcel;
this.landCases = landCases;
this.ucaseOrderno = ucaseOrderno;
this.ucaseIssuedate = ucaseIssuedate;
}
public UseCases(UseCasesId id) {
super();
this.id = id;
}
public UseCases(UrbanPlan urbanPlan, Parcel parcel, LandCases landCases,
String ucaseOrderno, Date ucaseIssuedate, String ucaseDocno,
String ucaseDesc, Date ucasedatesys, String ucaseIssuedatehj, String ucaseNote) {
super();
this.urbanPlan = urbanPlan;
this.parcel = parcel;
this.landCases = landCases;
this.ucaseOrderno = ucaseOrderno;
this.ucaseIssuedate = ucaseIssuedate;
this.ucaseDocno = ucaseDocno;
this.ucaseDesc = ucaseDesc;
this.ucasedatesys = ucasedatesys;
this.ucaseIssuedatehj = ucaseIssuedatehj;
this.ucaseNote = ucaseNote;
}
public UrbanPlan getUrbanPlan() {
return this.urbanPlan;
}
public void setUrbanPlan(UrbanPlan urbanPlan) {
this.urbanPlan = urbanPlan;
}
public Parcel getParcel() {
return this.parcel;
}
public void setParcel(Parcel parcel) {
this.parcel = parcel;
}
public LandCases getLandCases() {
return this.landCases;
}
public void setLandCases(LandCases landCases) {
this.landCases = landCases;
}
public String getUcaseOrderno() {
return this.ucaseOrderno;
}
public void setUcaseOrderno(String ucaseOrderno) {
this.ucaseOrderno = ucaseOrderno;
}
public Date getUcaseIssuedate() {
return this.ucaseIssuedate;
}
public void setUcaseIssuedate(Date ucaseIssuedate) {
this.ucaseIssuedate = ucaseIssuedate;
}
public String getUcaseDocno() {
return this.ucaseDocno;
}
public void setUcaseDocno(String ucaseDocno) {
this.ucaseDocno = ucaseDocno;
}
public String getUcaseDesc() {
return this.ucaseDesc;
}
public void setUcaseDesc(String ucaseDesc) {
this.ucaseDesc = ucaseDesc;
}
public Date getUcasedatesys() {
return this.ucasedatesys;
}
public void setUcasedatesys(Date ucasedatesys) {
this.ucasedatesys = ucasedatesys;
}
public String getUcaseIssuedatehj() {
return this.ucaseIssuedatehj;
}
public void setUcaseIssuedatehj(String ucaseIssuedatehj) {
this.ucaseIssuedatehj = ucaseIssuedatehj;
}
public String getUcaseNote() {
return ucaseNote;
}
public void setUcaseNote(String ucaseNote) {
this.ucaseNote = ucaseNote;
}
public UseCasesId getId() {
return id;
}
public void setId(UseCasesId id) {
this.id = id;
}
} |
la class du clé composé est UseCasesId.java:
Code:
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 com.dq.hibernate.model;
// Generated 7 ao�t 2013 15:46:08 by Hibernate Tools 3.4.0.CR1
/**
* UseCasesId generated by hbm2java
*/
public class UseCasesId implements java.io.Serializable {
private String upaId;
private String lndcasesId;
private String parcelNo;
private String parcelBlk;
private String parcelGrp;
public UseCasesId() {
}
public UseCasesId(String upaId, String lndcasesId, String parcelNo,
String parcelBlk, String parcelGrp) {
this.upaId = upaId;
this.lndcasesId = lndcasesId;
this.parcelNo = parcelNo;
this.parcelBlk = parcelBlk;
this.parcelGrp = parcelGrp;
}
public String getupaId() {
return this.upaId;
}
public void setupaId(String upaId) {
this.upaId = upaId;
}
public String getLndcasesId() {
return this.lndcasesId;
}
public void setLndcasesId(String lndcasesId) {
this.lndcasesId = lndcasesId;
}
public String getParcelNo() {
return this.parcelNo;
}
public void setParcelNo(String parcelNo) {
this.parcelNo = parcelNo;
}
public String getParcelBlk() {
return this.parcelBlk;
}
public void setParcelBlk(String parcelBlk) {
this.parcelBlk = parcelBlk;
}
public String getParcelGrp() {
return this.parcelGrp;
}
public void setParcelGrp(String parcelGrp) {
this.parcelGrp = parcelGrp;
}
public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof UseCasesId))
return false;
UseCasesId castOther = (UseCasesId) other;
return ((this.getupaId() == castOther.getupaId()) || (this
.getupaId() != null && castOther.getupaId() != null && this
.getupaId().equals(castOther.getupaId())))
&& ((this.getLndcasesId() == castOther.getLndcasesId()) || (this
.getLndcasesId() != null
&& castOther.getLndcasesId() != null && this
.getLndcasesId().equals(castOther.getLndcasesId())))
&& ((this.getParcelNo() == castOther.getParcelNo()) || (this
.getParcelNo() != null
&& castOther.getParcelNo() != null && this
.getParcelNo().equals(castOther.getParcelNo())))
&& ((this.getParcelBlk() == castOther.getParcelBlk()) || (this
.getParcelBlk() != null
&& castOther.getParcelBlk() != null && this
.getParcelBlk().equals(castOther.getParcelBlk())))
&& ((this.getParcelGrp() == castOther.getParcelGrp()) || (this
.getParcelGrp() != null
&& castOther.getParcelGrp() != null && this
.getParcelGrp().equals(castOther.getParcelGrp())));
}
public int hashCode() {
int result = 17;
result = 37
* result
+ (getupaId() == null ? 0 : this.getupaId()
.hashCode());
result = 37
* result
+ (getLndcasesId() == null ? 0 : this.getLndcasesId()
.hashCode());
result = 37 * result
+ (getParcelNo() == null ? 0 : this.getParcelNo().hashCode());
result = 37 * result
+ (getParcelBlk() == null ? 0 : this.getParcelBlk().hashCode());
result = 37 * result
+ (getParcelGrp() == null ? 0 : this.getParcelGrp().hashCode());
return result;
}
} |
j'ai essayé de faire l'insertion avec cette méthode :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public String saveUseCases(UseCases useCases, String action,String no,String blk,String grp) {
String result = "";
String[] list=useCases.getParcel().getParcelNo().split("-");
UseCases useCase=new UseCases(new UseCasesId(useCases.getUrbanPlan().getUpaId(),useCases.getLandCases().getLndcasesId(),no,blk,grp));
useCase.setUcaseIssuedate(useCases.getUcaseIssuedate());
useCase.setUcaseDocno(useCases.getUcaseDocno());
useCase.setUcaseNote(useCases.getUcaseNote());
useCase.setUcasedatesys(new Date());
try {
if (action.equals("SAVE")) {
useCasesDaoImpl.save(useCase);
result = useCases.getId().getParcelNo();
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return result;
} |
après le test de cette méthode une nouvelle ligne est ajouté dans la base mais aussi une exception est lancé :
l'erreur est lancé dans cette ligne :
je ne sais pas où exactement UseCasesId est converti en String
Code:
useCasesDaoImpl.save(useCase); /ligne 77
je pense qu'on doit modifier le fichier hbm
merci d'avance