When I used Spring datajpa and Hibenate to read Oracle, I met an error, I'll desc this:
The Oracle table name includes special character(double quotes), so, I have to use
SELECT * FROM "Graph" WHERE "ID"=1
.So, when I use hibernate to write a entity class, I have to point its special name.
Here is the ddl which is used to create "Graph"
table:
CREATE TABLE "ATLASCOPCO_TOOLSNET"."Graph" (
"ID" NUMBER(19) NOT NULL ,
"ResultID" NUMBER(19) NOT NULL ,
"GraphTypeID" NUMBER(19) NOT NULL ,
"SampleTime" BINARY_FLOAT NOT NULL ,
"AngleOffset" BINARY_FLOAT NOT NULL ,
"GraphValues" BLOB NOT NULL ,
"AngleFactor" BINARY_DOUBLE NULL ,
"TorqueFactor" BINARY_DOUBLE NULL ,
"StartTime" BINARY_FLOAT NULL ,
"EndTime" BINARY_FLOAT NULL
)
LOGGING
NOCOMPRESS
NOCACHE
When I used the normal table name like this:
@Entity
@Table(name = "Graph")
@Getter
@Setter
public class Graph {
@Id
@Column(name = "ID\"")
private Long id;
@Column(name = "ResultID")
private Long resultId;
@Column(name = "GraphTypeID")
private Long graphTypeID;
@Column(name = "SampleTime")
private BINARY_FLOAT sampleTime;
@Column(name = "AngleOffset")
private BINARY_FLOAT angleOffset;
@Column(name = "GraphValue")
private byte[] graphValue;
@Column(name = "AngleFactor")
private BINARY_DOUBLE angleFactor;
@Column(name = "TorqueFactor")
private BINARY_DOUBLE torqueFactor;
@Column(name = "StartTime")
private BINARY_FLOAT startTime;
@Column(name = "EndTime")
private BINARY_FLOAT endTime;
}
I got error:Caused by: java.sql.SQLSyntaxErrorException: ORA-00972: identifier is too long
When I used this:
@Entity
@Table(name = "\"Graph\"")
@Getter
@Setter
public class Graph {
@Id
@Column(name = "\"ID\"\"")
private Long id;
@Column(name = "\"ResultID\"")
private Long resultId;
@Column(name = "\"GraphTypeID\"")
private Long graphTypeID;
@Column(name = "\"SampleTime\"")
private BINARY_FLOAT sampleTime;
@Column(name = "\"AngleOffset\"")
private BINARY_FLOAT angleOffset;
@Column(name = "\"GraphValue\"")
private byte[] graphValue;
@Column(name = "\"AngleFactor\"")
private BINARY_DOUBLE angleFactor;
@Column(name = "\"TorqueFactor\"")
private BINARY_DOUBLE torqueFactor;
@Column(name = "\"StartTime\"")
private BINARY_FLOAT startTime;
@Column(name = "\"EndTime\"")
private BINARY_FLOAT endTime;
}
I got Caused by: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character