我想通过hibernate来存储图片,数据库是SQL-SERVER 2000,
JAVA类对应的类型是java.sql.Blob,
数据库类型用image,varbinary,binary
可以将图片成功保存,但是访问的时候总是出错:
Servlet.service() for servlet action threw exception
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported data conversion.*.hbm.xml文件如下
<property name="pp" type="java.sql.Blob">
<column name="pp" />
</property>这个问题搞了3天了,还是搞不定
我想问一下,hibernate和java里面分别应该用什么类型?
JAVA类对应的类型是java.sql.Blob,
数据库类型用image,varbinary,binary
可以将图片成功保存,但是访问的时候总是出错:
Servlet.service() for servlet action threw exception
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Unsupported data conversion.*.hbm.xml文件如下
<property name="pp" type="java.sql.Blob">
<column name="pp" />
</property>这个问题搞了3天了,还是搞不定
我想问一下,hibernate和java里面分别应该用什么类型?
(PS:对于不同的DB可能有所差异)
byte、java.lang.Byte byte TINYINT
short、java.lang.Short short SMALLINT
int、java.lang.Integer integer INGEGER
long、java.lang.Long long BIGINT
float、java.lang.Float float FLOAT
double、java.lang.Double double DOUBLE
java.math.BigDecimal big_decimal NUMERIC
char、java.lang.Character character CHAR(1)
boolean、java.lang.Boolean boolean BIT
java.lang.String string VARCHAR
boolean、java.lang.Boolean yes_no CHAR(1)('Y'或'N')
boolean、java.lang.Boolean true_false CHAR(1)('Y'或'N')
java.util.Date、java.sql.Date date DATE
java.util.Date、java.sql.Time time TIME
java.util.Date、java.sql.Timestamp timestamp TIMESTAMP
java.util.Calendar calendar TIMESTAMP
java.util.Calendar calendar_date DATE
byte[] binary VARBINARY、BLOB
java.lang.String text CLOB
java.io.Serializable serializable VARBINARY、BLOB
java.sql.Clob clob CLOB
java.sql.Blob blob BLOB
java.lang.Class class VARCHAR
java.util.Locale locale VARCHAR
java.util.TimeZone timezone VARCHAR
java.util.Currency currency VARCHAR
Pic3 showpp = (Pic3)p3DAO.findAll().get(0);
就是这句就出错了,我还没进行数据的转换
或者换成 Pic3 showpp = p3DAO.findById(1); 同样出错下面我贴出几个文件:POJO类 Pic3.java
public class Pic3 implements java.io.Serializable {
private Integer id;
private Blob pp;
/** default constructor */
public Pic3() {
}
/** full constructor */
public Pic3(Blob pp) {
this.pp = pp;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Blob getPp() {
return this.pp;
}
public void setPp(Blob pp) {
this.pp = pp;
}}DAO文件,Pic3DAO.java部分代码
private static final Log log = LogFactory.getLog(Pic3DAO.class);
public static final String PP = "pp";
public Pic3 findById(java.lang.Integer id) {
log.debug("getting Pic3 instance with id: " + id);
try {
Pic3 instance = (Pic3) getSession().get("com.xiang.table.Pic3", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
public List findAll() {
log.debug("finding all Pic instances");
try {
String queryString = "from Pic";
Query queryObject = getSession().createQuery(queryString);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}还有Pic3.hbm.xml
<hibernate-mapping>
<class name="com.xiang.table.Pic3" table="pic3" schema="dbo" catalog="dmp_data">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity"></generator>
</id>
<property name="pp" type="java.sql.Blob">
<column name="pp" />
</property>
</class>
java.sql.Blob blob BLOB 但是SQL-SERVER2000没有BLOB类型,难道无法保存图片或者使用HIBENATER?
java 和hibernate都是用 byte[]类型,SQL-SERVER2000用 image类型谢谢大家关注