cancel
Showing results for 
Search instead for 
Did you mean: 

Blob field in table. Deployment Exception.

Former Member
0 Kudos

I've got Entity EJB 3.0 :


package ru.technoserv.isat.ejb.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Blob;
import java.sql.Date;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Basic;


@Entity
@Table(name="UTT_APPLICATIONS")
public class UttApplications implements Serializable {
	@EmbeddedId
	private UttApplications.PK pk;

	private String info;


	@Column(name="VER_RELEASE")
	private BigDecimal verRelease;

	@Column(name="VER_BUILD")
	private BigDecimal verBuild;

	@Column(name="VER_MAJOR")
	private BigDecimal verMajor;

	@Column(name="FILE_NAME")
	private String fileName;

	@Column(name="VER_MINOR")
	private BigDecimal verMinor;

	@Column(name="BODY", updatable = false)
	@Lob
	@Basic
	private Blob bodyX;

	@Column(name="R1")
	private BigDecimal r1;

	@Column(name="DATESYS")
	private Date datesys;

	@Column(name="R2")
	private BigDecimal r2;


	private static final long serialVersionUID = 1L;

	public UttApplications() {
		super();
	}

	public UttApplications.PK getPk() {
		return this.pk;
	}

	public void setPk(UttApplications.PK pk) {
		this.pk = pk;
	}

	public String getInfo() {
		return this.info;
	}

	public void setInfo(String info) {
		this.info = info;
	}

	public BigDecimal getR1() {
		return this.r1;
	}

	public void setR1(BigDecimal r1) {
		this.r1 = r1;
	}

	public BigDecimal getVerRelease() {
		return this.verRelease;
	}

	public void setVerRelease(BigDecimal verRelease) {
		this.verRelease = verRelease;
	}

	public BigDecimal getVerBuild() {
		return this.verBuild;
	}

	public void setVerBuild(BigDecimal verBuild) {
		this.verBuild = verBuild;
	}

	public BigDecimal getVerMajor() {
		return this.verMajor;
	}

	public void setVerMajor(BigDecimal verMajor) {
		this.verMajor = verMajor;
	}

	public Blob getBody() {
		return this.bodyX;
	}

	public void setBody(Blob bodyX) {
		this.bodyX = bodyX;
	}

	public BigDecimal getR2() {
		return this.r2;
	}

	public void setR2(BigDecimal r2) {
		this.r2 = r2;
	}

	public String getFileName() {
		return this.fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}


	public BigDecimal getVerMinor() {
		return this.verMinor;
	}

	public void setVerMinor(BigDecimal verMinor) {
		this.verMinor = verMinor;
	}

	public Date getDatesys() {
		return this.datesys;
	}

	public void setDatesys(Date datesys) {
		this.datesys = datesys;
	}

	@Embeddable
	public static class PK implements Serializable {
		private BigDecimal verRelease;
		private BigDecimal verMajor;
		private BigDecimal verMinor;
		private BigDecimal verBuild;
		private String info;
		private static final long serialVersionUID = 1L;

		public PK() {
			super();
		}

		public BigDecimal getVerRelease() {
			return this.verRelease;
		}

		public void setVerRelease(BigDecimal verRelease) {
			this.verRelease = verRelease;
		}

		public BigDecimal getVerMajor() {
			return this.verMajor;
		}

		public void setVerMajor(BigDecimal verMajor) {
			this.verMajor = verMajor;
		}

		public BigDecimal getVerMinor() {
			return this.verMinor;
		}

		public void setVerMinor(BigDecimal verMinor) {
			this.verMinor = verMinor;
		}

		public BigDecimal getVerBuild() {
			return this.verBuild;
		}

		public void setVerBuild(BigDecimal verBuild) {
			this.verBuild = verBuild;
		}

		public String getInfo() {
			return this.info;
		}

		public void setInfo(String info) {
			this.info = info;
		}

		@Override
		public boolean equals(Object o) {
			if (o == this) {
				return true;
			}
			if ( ! (o instanceof PK)) {
				return false;
			}
			PK other = (PK) o;
			return this.verRelease.equals(other.verRelease)
				&& this.verMajor.equals(other.verMajor)
				&& this.verMinor.equals(other.verMinor)
				&& this.verBuild.equals(other.verBuild)
				&& this.info.equals(other.info);
		}

		@Override
		public int hashCode() {
			return this.verRelease.hashCode()
				^ this.verMajor.hashCode()
				^ this.verMinor.hashCode()
				^ this.verBuild.hashCode()
				^ this.info.hashCode();
		}

	}

}

5 times that code was deployed within EAR.

Today that code raising exception while deploying!

There are some deploy log:


25.05.2007 11:29:11 /userOut/daView_category (eclipse.UserOutLocation) [Thread[Deploy Thread,6,main]] ERROR: Deploy Exception.An error occurred while deploying the deployment item 'sap.com_ISATMW'.; nested exception is: 
	java.rmi.RemoteException:  class com.sap.engine.services.dc.gd.DeliveryException: An error occurred during deployment of sdu id: sap.com_ISATMW
sdu file path: C:SAPJP1JC00j2eeclusterserver0temptc~bl~deploy_controllerarchives81ISATMW.ear
version status: HIGHER
deployment status: Admitted
description: 
		1. Error: 
Cannot update application sap.com/ISATMW. Reason: The application sap.com/ISATMW will not be update, because its validation failed. Reason:
 
ERRORS:

ORPersistence Model Builder: Exception occurred: com.sap.engine.services.orpersistence.model.ormappingmodel.ORMException: Field 'java.sql.Blob bodyX' of class 'ru.technoserv.isat.ejb.entity.UttApplications is not persistent field according to spec at com.sap.engine.services.orpersistence.model.ormappingmodel.impl.ORMappingModelCreatorImpl.checkIfPersistent(ORMappingModelCreatorImpl.java:1973), file: ISATMWEJB.jar, column 0, line 0, severity: error
.. 
Reason: The application sap.com/ISATMW will not be update, because its validation failed. Reason:

Any comment's about exception?

And i wounder to know what in ORMappingModelCreatorImpl.java line 1973.

P.S. Help me!

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

I look at deployment descriptor of JDBC datasource - there are was open_sql option.

sabine_heider
Explorer
0 Kudos

Hi,

According to the JPA specification, Blob is not a supported data type for persistent fields. See section 2.1.1:

<i>The persistent fields or properties of an entity may be of the following types: Java primitive types;

java.lang.String; other Java serializable types (including wrappers of the primitive types,

java.math.BigInteger, java.math.BigDecimal, java.util.Date,

java.util.Calendar[7], java.sql.Date, java.sql.Time, java.sql.Timestamp,

user-defined serializable types, byte[], Byte[], char[], and Character[]); enums; entity

types and/or collections of entity types; and embeddable classes (see section 2.1.5).</i>

Best regards,

Sabine

Former Member
0 Kudos

With Blob all clear. But I again I have deployment exception!

Here my code:


package ru.technoserv.isat.ejb.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Date;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name="UTT_TDOK")
public class UttTdok implements Serializable {
	@EmbeddedId
	private UttTdok.PK pk;

	@Column(name="K_UNDERLOAD")
	private BigDecimal kUnderload;

	@Column(name="CEX_ID")
	private BigDecimal cexId;

	@Column(name="BRIG_ID")
	private BigDecimal brigId;

	private BigDecimal f1n;

	private String way;

	private String subzak;

	private String poputno;

	@Column(name="VID_VAHT")
	private String vidVaht;

	@Column(name="KM_CITY")
	private BigDecimal kmCity;

	private BigDecimal f4n;

	@Column(name="ZAKAZ_NUM")
	private String zakazNum;

	@Column(name="VID_RABOT")
	private String vidRabot;

	private BigDecimal skvajina;

	@Column(name="DEPT_REESTR")
	private BigDecimal deptReestr;

	@Column(name="TONN_PRIC")
	private BigDecimal tonnPric;

	@Column(name="KM_3")
	private BigDecimal km3;

	@Column(name="KM_GRUZ")
	private BigDecimal kmGruz;

	private BigDecimal mh;

	private BigDecimal cubature;

	@Column(name="SPEC_EQ")
	private BigDecimal specEq;

	@Column(name="KM_2")
	private BigDecimal km2;

	@Column(name="KM_OFFROAD")
	private BigDecimal kmOffroad;

	private BigDecimal ezdok;

	@Column(name="DATE_RENDER")
	private Date dateRender;

	@Column(name="KM_1")
	private BigDecimal km1;

	@Column(name="DATE_IN")
	private Date dateIn;

	private BigDecimal f3n;

	private BigDecimal tonn;

	private BigDecimal r2;

	@Column(name="KOL_HOUR")
	private BigDecimal kolHour;

	@Column(name="HEAD_EQ")
	private BigDecimal headEq;

	@Column(name="DATE_OUT")
	private Date dateOut;

	private String prominka;

	@Column(name="DATE_END")
	private Date dateEnd;

	@Column(name="DATE_SET")
	private Date dateSet;

	private String f1c;

	@Column(name="P_ZAGRUZ")
	private BigDecimal pZagruz;

	private BigDecimal r1;

	private String f2c;

	private BigDecimal f2n;

	private BigDecimal dohod;

	private BigDecimal km;

	private BigDecimal mvz;

	@Column(name="KOEF_CUBATURA")
	private BigDecimal koefCubatura;

	@ManyToOne
	private UttBuildobj buildobj;

	@ManyToOne
	private UttObjgis carier;

	@ManyToOne
	@JoinColumn(name="BUILDOBJ_FROM")
	private UttBuildobj buildobjFrom;

	@ManyToOne
	@JoinColumn(name="KUST")
	private UttObjgis kust;

	@ManyToOne
	@JoinColumn(name="deptfix_id", referencedColumnName = "id")
	private UttDeptfix deptfix;
	
//	@Column(name="DEPTFIX_ID")
//	private BigDecimal deptfixId;

	@ManyToOne
	private UtttypeObjgisOilfield oilfield;

	@ManyToOne
	private UtttypeJob job;

	@ManyToOne
	private UtttypeBrutto brutto;

	@OneToMany(mappedBy="uttTdok")
	private Set<UttTdokDop> uttTdokDopCollection;

	@OneToMany(mappedBy="uttTdok")
	private Set<UttTdokProp> uttTdokPropCollection;

	private static final long serialVersionUID = 1L;

	public UttTdok() {
		super();
	}

	public UttTdok.PK getPk() {
		return this.pk;
	}

	public void setPk(UttTdok.PK pk) {
		this.pk = pk;
	}

	public BigDecimal getKUnderload() {
		return this.kUnderload;
	}

	public void setKUnderload(BigDecimal kUnderload) {
		this.kUnderload = kUnderload;
	}

	public BigDecimal getCexId() {
		return this.cexId;
	}

	public void setCexId(BigDecimal cexId) {
		this.cexId = cexId;
	}

	public BigDecimal getBrigId() {
		return this.brigId;
	}

	public void setBrigId(BigDecimal brigId) {
		this.brigId = brigId;
	}

	public BigDecimal getF1n() {
		return this.f1n;
	}

	public void setF1n(BigDecimal f1n) {
		this.f1n = f1n;
	}

	public String getWay() {
		return this.way;
	}

	public void setWay(String way) {
		this.way = way;
	}

	public String getSubzak() {
		return this.subzak;
	}

	public void setSubzak(String subzak) {
		this.subzak = subzak;
	}

	public String getPoputno() {
		return this.poputno;
	}

	public void setPoputno(String poputno) {
		this.poputno = poputno;
	}

	public String getVidVaht() {
		return this.vidVaht;
	}

	public void setVidVaht(String vidVaht) {
		this.vidVaht = vidVaht;
	}

	public BigDecimal getKmCity() {
		return this.kmCity;
	}

	public void setKmCity(BigDecimal kmCity) {
		this.kmCity = kmCity;
	}

	public BigDecimal getF4n() {
		return this.f4n;
	}

	public void setF4n(BigDecimal f4n) {
		this.f4n = f4n;
	}

	public String getZakazNum() {
		return this.zakazNum;
	}

	public void setZakazNum(String zakazNum) {
		this.zakazNum = zakazNum;
	}

	public String getVidRabot() {
		return this.vidRabot;
	}

	public void setVidRabot(String vidRabot) {
		this.vidRabot = vidRabot;
	}

	public BigDecimal getSkvajina() {
		return this.skvajina;
	}

	public void setSkvajina(BigDecimal skvajina) {
		this.skvajina = skvajina;
	}

	public BigDecimal getDeptReestr() {
		return this.deptReestr;
	}

	public void setDeptReestr(BigDecimal deptReestr) {
		this.deptReestr = deptReestr;
	}

	public BigDecimal getTonnPric() {
		return this.tonnPric;
	}

	public void setTonnPric(BigDecimal tonnPric) {
		this.tonnPric = tonnPric;
	}

	public BigDecimal getKm3() {
		return this.km3;
	}

	public void setKm3(BigDecimal km3) {
		this.km3 = km3;
	}

	public BigDecimal getKmGruz() {
		return this.kmGruz;
	}

	public void setKmGruz(BigDecimal kmGruz) {
		this.kmGruz = kmGruz;
	}

	public BigDecimal getMh() {
		return this.mh;
	}

	public void setMh(BigDecimal mh) {
		this.mh = mh;
	}

	public BigDecimal getCubature() {
		return this.cubature;
	}

	public void setCubature(BigDecimal cubature) {
		this.cubature = cubature;
	}

	public BigDecimal getSpecEq() {
		return this.specEq;
	}

	public void setSpecEq(BigDecimal specEq) {
		this.specEq = specEq;
	}

	public BigDecimal getKm2() {
		return this.km2;
	}

	public void setKm2(BigDecimal km2) {
		this.km2 = km2;
	}

	public BigDecimal getKmOffroad() {
		return this.kmOffroad;
	}

	public void setKmOffroad(BigDecimal kmOffroad) {
		this.kmOffroad = kmOffroad;
	}

	public BigDecimal getEzdok() {
		return this.ezdok;
	}

	public void setEzdok(BigDecimal ezdok) {
		this.ezdok = ezdok;
	}

	public Date getDateRender() {
		return this.dateRender;
	}

	public void setDateRender(Date dateRender) {
		this.dateRender = dateRender;
	}

	public BigDecimal getKm1() {
		return this.km1;
	}

	public void setKm1(BigDecimal km1) {
		this.km1 = km1;
	}

	public Date getDateIn() {
		return this.dateIn;
	}

	public void setDateIn(Date dateIn) {
		this.dateIn = dateIn;
	}

	public BigDecimal getF3n() {
		return this.f3n;
	}

	public void setF3n(BigDecimal f3n) {
		this.f3n = f3n;
	}

	public BigDecimal getTonn() {
		return this.tonn;
	}

	public void setTonn(BigDecimal tonn) {
		this.tonn = tonn;
	}

	public BigDecimal getR2() {
		return this.r2;
	}

	public void setR2(BigDecimal r2) {
		this.r2 = r2;
	}

	public BigDecimal getKolHour() {
		return this.kolHour;
	}

	public void setKolHour(BigDecimal kolHour) {
		this.kolHour = kolHour;
	}

	public BigDecimal getHeadEq() {
		return this.headEq;
	}

	public void setHeadEq(BigDecimal headEq) {
		this.headEq = headEq;
	}

	public Date getDateOut() {
		return this.dateOut;
	}

	public void setDateOut(Date dateOut) {
		this.dateOut = dateOut;
	}

	public String getProminka() {
		return this.prominka;
	}

	public void setProminka(String prominka) {
		this.prominka = prominka;
	}

	public Date getDateEnd() {
		return this.dateEnd;
	}

	public void setDateEnd(Date dateEnd) {
		this.dateEnd = dateEnd;
	}

	public Date getDateSet() {
		return this.dateSet;
	}

	public void setDateSet(Date dateSet) {
		this.dateSet = dateSet;
	}

	public String getF1c() {
		return this.f1c;
	}

	public void setF1c(String f1c) {
		this.f1c = f1c;
	}

	public BigDecimal getPZagruz() {
		return this.pZagruz;
	}

	public void setPZagruz(BigDecimal pZagruz) {
		this.pZagruz = pZagruz;
	}

	public BigDecimal getR1() {
		return this.r1;
	}

	public void setR1(BigDecimal r1) {
		this.r1 = r1;
	}

	public String getF2c() {
		return this.f2c;
	}

	public void setF2c(String f2c) {
		this.f2c = f2c;
	}

	public BigDecimal getF2n() {
		return this.f2n;
	}

	public void setF2n(BigDecimal f2n) {
		this.f2n = f2n;
	}

	public BigDecimal getDohod() {
		return this.dohod;
	}

	public void setDohod(BigDecimal dohod) {
		this.dohod = dohod;
	}

	public BigDecimal getKm() {
		return this.km;
	}

	public void setKm(BigDecimal km) {
		this.km = km;
	}

	public BigDecimal getMvz() {
		return this.mvz;
	}

	public void setMvz(BigDecimal mvz) {
		this.mvz = mvz;
	}

	public BigDecimal getKoefCubatura() {
		return this.koefCubatura;
	}

	public void setKoefCubatura(BigDecimal koefCubatura) {
		this.koefCubatura = koefCubatura;
	}

	public UttBuildobj getBuildobj() {
		return this.buildobj;
	}

	public void setBuildobj(UttBuildobj buildobj) {
		this.buildobj = buildobj;
	}

	public UttObjgis getCarier() {
		return this.carier;
	}

	public void setCarier(UttObjgis carier) {
		this.carier = carier;
	}

	public UttBuildobj getBuildobjFrom() {
		return this.buildobjFrom;
	}

	public void setBuildobjFrom(UttBuildobj buildobjFrom) {
		this.buildobjFrom = buildobjFrom;
	}

	public UttObjgis getKust() {
		return this.kust;
	}

	public void setKust(UttObjgis kust) {
		this.kust = kust;
	}

	public UttDeptfix getDeptfix() {
		return this.deptfix;
	}

	public void setDeptfix(UttDeptfix deptfix) {
		this.deptfix = deptfix;
	}

	public UtttypeObjgisOilfield getOilfield() {
		return this.oilfield;
	}

	public void setOilfield(UtttypeObjgisOilfield oilfield) {
		this.oilfield = oilfield;
	}

	public UtttypeJob getJob() {
		return this.job;
	}

	public void setJob(UtttypeJob job) {
		this.job = job;
	}

	public UtttypeBrutto getBrutto() {
		return this.brutto;
	}

	public void setBrutto(UtttypeBrutto brutto) {
		this.brutto = brutto;
	}

	public Set<UttTdokDop> getUttTdokDopCollection() {
		return this.uttTdokDopCollection;
	}

	public void setUttTdokDopCollection(Set<UttTdokDop> uttTdokDopCollection) {
		this.uttTdokDopCollection = uttTdokDopCollection;
	}

	public Set<UttTdokProp> getUttTdokPropCollection() {
		return this.uttTdokPropCollection;
	}

	public void setUttTdokPropCollection(Set<UttTdokProp> uttTdokPropCollection) {
		this.uttTdokPropCollection = uttTdokPropCollection;
	}


	@Embeddable
	public static class PK implements Serializable {
		private BigDecimal numorder;
		private String typeTdok;
		private BigDecimal deptfixId;
		private BigDecimal nomer;
		private static final long serialVersionUID = 1L;

		public PK() {
			super();
		}

		public BigDecimal getNumorder() {
			return this.numorder;
		}

		public void setNumorder(BigDecimal numorder) {
			this.numorder = numorder;
		}

		public String getTypeTdok() {
			return this.typeTdok;
		}

		public void setTypeTdok(String typeTdok) {
			this.typeTdok = typeTdok;
		}

		public BigDecimal getDeptfixId() {
			return this.deptfixId;
		}

		public void setDeptfixId(BigDecimal deptfixId) {
			this.deptfixId = deptfixId;
		}

		public BigDecimal getNomer() {
			return this.nomer;
		}

		public void setNomer(BigDecimal nomer) {
			this.nomer = nomer;
		}

		@Override
		public boolean equals(Object o) {
			if (o == this) {
				return true;
			}
			if ( ! (o instanceof PK)) {
				return false;
			}
			PK other = (PK) o;
			return this.numorder.equals(other.numorder)
				&& this.typeTdok.equals(other.typeTdok)
				&& this.deptfixId.equals(other.deptfixId)
				&& this.nomer.equals(other.nomer);
		}

		@Override
		public int hashCode() {
			return this.numorder.hashCode()
				^ this.typeTdok.hashCode()
				^ this.deptfixId.hashCode()
				^ this.nomer.hashCode();
		}

	}

}

and DEPLOYMENT EXCEPTION :


25.05.2007 12:00:23 /userOut/daView_category (eclipse.UserOutLocation) [Thread[Deploy Thread,6,main]] ERROR: Deploy Exception.An error occurred while deploying the deployment item 'sap.com_ISATMW'.; nested exception is: 
	java.rmi.RemoteException:  class com.sap.engine.services.dc.gd.DeliveryException: An error occurred during deployment of sdu id: sap.com_ISATMW
sdu file path: C:SAPJP1JC00j2eeclusterserver0temptc~bl~deploy_controllerarchives82ISATMW.ear
version status: HIGHER
deployment status: Admitted
description: 
		1. Error: 
Cannot update application sap.com/ISATMW. Reason: The application sap.com/ISATMW will not be update, because its validation failed. Reason:
 
ERRORS:

ORPersistence Model Builder: Exception occurred: com.sap.engine.services.orpersistence.model.ormappingmodel.ORMException: Column with name 'DEPTFIX_ID' not found in table 'UTT_TDOK' of persistent class 'ru.technoserv.isat.ejb.entity.UttTdok at com.sap.engine.services.orpersistence.model.ormappingmodel.impl.ORMUtils.getColumnByName(ORMUtils.java:1259), file: ISATMWEJB.jar, column 0, line 0, severity: error
.. 
Reason: The application sap.com/ISATMW will not be update, because its validation failed.

Here i show DESC command output from SQL*Plus console:

SQL> desc UTT_TDOK

&#1048;&#1084;&#1103; &#1055;&#1091;&#1089;&#1090;&#1086;? &#1058;&#1080;&#1087;

-


-


-


<b>DEPTFIX_ID NOT NULL NUMBER</b>

NOMER NOT NULL NUMBER

TYPE_TDOK NOT NULL CHAR(1)

NUMORDER NOT NULL NUMBER

CEX_ID NUMBER

BRIG_ID NUMBER

KOL_HOUR NOT NULL NUMBER

EZDOK NOT NULL NUMBER

WAY NOT NULL CHAR(1)

JOB_ID NUMBER

BUILDOBJ_ID NUMBER

PROMINKA CHAR(1)

K_UNDERLOAD NOT NULL NUMBER

DATE_RENDER DATE

MVZ NUMBER

TONN_PRIC NUMBER

HEAD_EQ NUMBER

BRUTTO_ID NUMBER

TONN NUMBER

CUBATURE NUMBER

MH NUMBER

KM NUMBER

KM_GRUZ NUMBER

KM_1 NUMBER

KM_2 NUMBER

KM_3 NUMBER

KM_CITY NUMBER

SPEC_EQ NUMBER

F1C CHAR(1)

F2C CHAR(1)

F1N NUMBER

F2N NUMBER

F3N NUMBER

F4N NUMBER

KM_OFFROAD NUMBER

CARIER_ID NUMBER

DOHOD NUMBER

P_ZAGRUZ NUMBER

DATE_IN DATE

DATE_OUT DATE

DEPT_REESTR NUMBER

DATE_SET DATE

DATE_END DATE

BUILDOBJ_FROM NUMBER

SUBZAK CHAR(1)

OILFIELD_ID NUMBER

KUST NUMBER

SKVAJINA NUMBER

KOEF_CUBATURA NUMBER

VID_RABOT VARCHAR2(2)

R1 NUMBER

R2 NUMBER

POPUTNO CHAR(1)

ZAKAZ_NUM VARCHAR2(12)

VID_VAHT VARCHAR2(2)

SQL>

What i must to do in that situation?