My database contains 3 tables: ARTICLE and INVENTAIRE entities have many-to-many relationship and are joined with the INVENTAIRE_ARTICLE table as follows:
INVENTAIRE
@Entity
@Table(name = "INVENTAIRE")
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Inventaire implements Serializable{
@Id
@Column(name = "id_inventaire")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "dateCreation", nullable = true)
private Date dateCreation;
@ManyToOne
Operation operation;
@OneToMany(fetch=FetchType.LAZY, mappedBy="pk.inventaire", cascade=CascadeType.ALL)
Set<InventaireArticle> inventaireArticle = new HashSet<InventaireArticle>();
public Set<InventaireArticle> getInventaireArticle() {
return inventaireArticle;
}
public void setInventaireArticle(Set<InventaireArticle> inventaireArticle) {
this.inventaireArticle = inventaireArticle;
}
public Date getDateCreation() {
return dateCreation;
}
public void setDateCreation(Date dateCreation) {
this.dateCreation = dateCreation;
}
public Operation getOperation() {
return operation;
}
public void setOperation(Operation operation) {
this.operation = operation;
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
}
Article
@Entity
@Table(name = "ARTICLE" )
public class Article implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@Column(name = "id_article")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "description", nullable = true)
private String description;
@Column(name = "designation", nullable = true)
private String designation;
@Column(name = "observation", nullable = true)
private String observation;
@Column(name = "nserie", nullable = true)
private String nserie;
@Column(name = "marque", nullable = true)
private String marque;
@Column(name = "typecontenant", nullable = true)
private String typecontenant;
@Column(name = "rfid", nullable = true)
private String rfid;
@Column(name = "fournisseur", nullable = true)
private String fournisseur;
@Column(name = "codeAbarre", nullable = true)
private String codeAbarre;
@Column(name = "model", nullable = true)
private String model;
@Column(name = "consommation", nullable = true)
private float consommation;
@Column(name = "nbreunite", nullable = true)
private int nbreunite;
@Column(name = "idClient", nullable = true)
private String idClient;
@Column(name = "adresseIp", nullable = true)
private String adresseIp;
@Column(name = "dateExpiration", nullable = true)
private Date dateExpiration;
@Column(name = "dateSaisie", nullable = true)
private Date dateSaisie;
@Column(name = "dateAcquisition", nullable = true)
private Date dateAcquisition;
@Column(name = "prixAchat", nullable = true)
private float prixAchat;
@Column(name = "position", nullable = true)
private String position;
@OneToMany(fetch=FetchType.LAZY, mappedBy="pk.article", cascade=CascadeType.ALL)
private Set<InventaireArticle> inventaireArticle = new HashSet<InventaireArticle>();
public Set<InventaireArticle> getInventaireArticle() {
return inventaireArticle;
}
public void setInventaireArticle(Set<InventaireArticle> inventaireArticle) {
this.inventaireArticle = inventaireArticle;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public int getNbreunite() {
return nbreunite;
}
public void setNbreunite(int nbreunite) {
this.nbreunite = nbreunite;
}
public String getTypecontenant() {
return typecontenant;
}
public void setTypecontenant(String typecontenant) {
this.typecontenant = typecontenant;
}
public String getFournisseur() {
return fournisseur;
}
public void setFournisseur(String fournisseur) {
this.fournisseur = fournisseur;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getAdresseIp() {
return adresseIp;
}
public void setAdresseIp(String adresseIp) {
this.adresseIp = adresseIp;
}
public Date getDateSaisie() {
return dateSaisie;
}
public void setDateSaisie(Date dateSaisie) {
this.dateSaisie = dateSaisie;
}
public Date getDateAcquisition() {
return dateAcquisition;
}
public void setDateAcquisition(Date dateAcquisition) {
this.dateAcquisition = dateAcquisition;
}
public float getPrixAchat() {
return prixAchat;
}
public void setPrixAchat(float prixAchat) {
this.prixAchat = prixAchat;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
public String getObservation() {
return observation;
}
public void setObservation(String observation) {
this.observation = observation;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getNserie() {
return nserie;
}
public void setNserie(String nserie) {
this.nserie = nserie;
}
public String getMarque() {
return marque;
}
public void setMarque(String marque) {
this.marque = marque;
}
public String getIdClient() {
return idClient;
}
public void setIdClient(String idClient) {
this.idClient = idClient;
}
public Date getDateExpiration() {
return dateExpiration;
}
public void setDateExpiration(Date dateExpiration) {
this.dateExpiration = dateExpiration;
}
public String getRfid() {
return rfid;
}
public void setRfid(String rfid) {
this.rfid = rfid;
}
public String getCodeAbarre() {
return codeAbarre;
}
public void setCodeAbarre(String codeAbarre) {
this.codeAbarre = codeAbarre;
}
public float getConsommation() {
return consommation;
}
public void setConsommation(float consommation) {
this.consommation = consommation;
}
}
INVENTAIRE_ARTICLE
@Entity
@Table(name = "INVENTAIRE_ARTICLE")
@AssociationOverrides({
@AssociationOverride(name = "pk.inventaire",
joinColumns = @JoinColumn(name = "id_inventaire")),
@AssociationOverride(name = "pk.article",
joinColumns = @JoinColumn(name = "id_article")) })
public class InventaireArticle implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@EmbeddedId
private InventaireArticleId pk=new InventaireArticleId();
// private long id_inventaire;
// private long id_article;
@Column(name = "dateSaisie")
private Date dateSaisie;
@Column(name = "nouveauContenant")
private String nouveauContenant;
@Column(name = "nouvelAsset")
private String nouvelAsset;
@Column(name = "assetsAssets")
private String assetsAssets;
@Column(name = "assetsNonAsset")
private String assetsNonAsset;
@Column(name = "assetsNonTrouves")
private String assetsNonTrouves;
public Date getDateSaisie() {
return dateSaisie;
}
public void setDateSaisie(Date dateSaisie) {
this.dateSaisie = dateSaisie;
}
public String getNouveauContenant() {
return nouveauContenant;
}
public void setNouveauContenant(String nouveauContenant) {
this.nouveauContenant = nouveauContenant;
}
public String getNouvelAsset() {
return nouvelAsset;
}
public void setNouvelAsset(String nouvelAsset) {
this.nouvelAsset = nouvelAsset;
}
public String getAssetsAssets() {
return assetsAssets;
}
public void setAssetsAssets(String assetsAssets) {
this.assetsAssets = assetsAssets;
}
public String getAssetsNonAsset() {
return assetsNonAsset;
}
public void setAssetsNonAsset(String assetsNonAsset) {
this.assetsNonAsset = assetsNonAsset;
}
public String getAssetsNonTrouves() {
return assetsNonTrouves;
}
public void setAssetsNonTrouves(String assetsNonTrouves) {
this.assetsNonTrouves = assetsNonTrouves;
}
public InventaireArticleId getPk() {
return pk;
}
public void setPk(InventaireArticleId pk) {
this.pk = pk;
}
@Transient
public Article getArticle() {
return getPk().getArticle();
}
public void setArticle(Article article) {
getPk().setArticle(article);
}
@Transient
public Inventaire getInventaire() {
return getPk().getInventaire();
}
public void setInventaire(Inventaire inventaire) {
getPk().setInventaire(inventaire);
}
@Override
public int hashCode() {
return (getPk()!=null?getPk().hashCode():0);
}
//
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
InventaireArticle other = (InventaireArticle) obj;
if (getPk()!=null ? !getPk().equals(other.getPk()): other.getPk() !=null) return false;
// if (article!=null ? !article.equals(other.article): other.article !=null) return false;
return true;
}
}
My script of table : INVENTAIRE_ARTICLE
CREATE TABLE [dbo].[INVENTAIRE_ARTICLE](
[article] [numeric](19, 0) NOT NULL,
[inventaire] [numeric](19, 0) NOT NULL,
[assetsAssets] [varchar](255) NULL,
[assetsNonAsset] [varchar](255) NULL,
[assetsNonTrouves] [varchar](255) NULL,
[dateSaisie] [datetime2](7) NULL,
[nouveauContenant] [varchar](255) NULL,
[nouvelAsset] [varchar](255) NULL,
PRIMARY KEY CLUSTERED
(
[article] ASC,
[inventaire] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
When i want to create an instance of inventaire i have this exception :
com.microsoft.sqlserver.jdbc.SQLServerException: Une erreur de d걡ssement arithm굩que s'est produite lors de la conversion de varbinary en type de donn꦳ numeric.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.nextRow(SQLServerResultSet.java:4853)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(SQLServerResultSet.java:1781)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerResultSet.java:1034)
at org.jboss.resource.adapter.jdbc.WrappedResultSet.next(WrappedResultSet.java:1196)
at org.hibernate.persister.entity.AbstractEntityPersister.getDatabaseSnapshot(AbstractEntityPersister.java:1051)
at org.hibernate.engine.StatefulPersistenceContext.getDatabaseSnapshot(StatefulPersistenceContext.java:269)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:212)
at org.hibernate.event.def.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:535)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:103)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:534)
at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:526)
at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:241)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:291)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:239)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:319)
at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:265)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:242)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192)
at org.hibernate.engine.Cascade.cascade(Cascade.java:153)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:479)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:357)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546)
at com.kts.dao.InventaireDAO.create(InventaireDAO.java:32)
at com.kts.dao.InventaireDAO$$FastClassByCGLIB$$7c8691b0.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:618)
at com.kts.dao.InventaireDAO$$EnhancerByCGLIB$$2461102e.create(<generated>)
at com.kts.services.impl.InventaireService.createInventaire(InventaireService.java:121)
at com.kts.services.impl.InventaireService$$FastClassByCGLIB$$b529d9b1.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
at com.kts.services.impl.InventaireService$$EnhancerByCGLIB$$c8955339.createInventaire(<generated>)
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:597)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:166)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82)
at org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:98)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:104)
at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:452)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:196)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:220)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFServlet.java:211)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
why i have type varbinary? i specified to my colum type of numeric(19,0) in INVENTAIRE_ARTICLE,
Aucun commentaire:
Enregistrer un commentaire