sy_椒盐皮皮虾
海滩小贝壳
存储图片应该和主键id没有关系吧,id设置成native,Mysql数据库会根据基础数据库自动设定成increment自动增长,id类型是int;会不会是你的id类型的问题
qq_懵懂的岁月_0
慕移动2735134
没有定义该类型,查看你的数据库配置文件
qq_懵懂的岁月_0
可以的
一只长颈鹿哦
错误提示是SQL语法有错误,我猜是配置方言出了问题。我一开始用的方言是跟老师一样的可是报错,换了org.hibernate.dialect.MySQL5InnoDBDialect就没问题了(或者不配置方言试试)。 ——初学者试答
qq_杀意隆_0
数据库存放照片路径这种方法,一旦文件丢失或路径被修改,就会造成数据丢失
暮色如虹
找到原因了,是由于Students.hbm.xml文件中,我的主键生成策略使用了native,换成assigned就可以了。但原理还是不懂。直接原因是,使用了Blob类型,主键自增不好使了。tag一下,变强之后,要记得解释这个问题。
慕粉4273603
Blob image = Hibernate.getLobCreator(session).createBlob(input,input.available());
你的Blob包用的是com.mysql.jdbc.Blob,应该用java.sql.Blob。
把你的代码中import com.mysql.jdbc.Blob;替换成import java.sql.Blob;
慕侠3929823
贴代码,和报错信息
慕少7359331
解决了,没有setPicture
慕少7359331
已解决, com.mysql.jdbc.Blob 包导入错误,应该是java.sql.Blob.
慕粉3224399
然后错误信息为:java.lang.AbstractMethodError: Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V is abstract
是这样吗?
Rebug
已解决问题 mysql jdbc的驱动版本太低 更换为5.1.41就可以了
不看6324不混吃等死
不会运行的
@Test,只需要导一次包就行了,
每一个@Test注解,下面写的方法都不是一样的,
都是相互独立的,你要运行哪一个,就会运行哪一个。
不看6324不混吃等死
最好保存图片链接,
XKing丶QueenRI
关闭了输入流就无法输出信息
慕码人8979130
Lian_Huang
是因为你这个测试方法没有获得session,在上面添加这两行
// 开启工厂
sessionFactory=configuration.buildSessionFactory(serviceRegistry);
// 打开session
session=sessionFactory.openSession();
秦家小小神
问题解决了,实体类添加picture属性后,不知道为啥映射文件没有放到src下。。。。。。
慕粉2344018232
图片在mysql中的存储形式本来就是二进制的,输出的当然也是二进制数据,你设置的数据表的编码是utf-8,而二进制数据是最原始的数据,不存在什么编码格式,自然也无法转换成utf-8,所以就出现了乱码。难道你还指望mysql在控制台给你打印原图出来?
丶子非鱼

你在hbm.xml文件中写的blob类型相当于是hibernate的blob,也可以写成Java中的java.sql.Blob类型,从上图中可以看出这样写是一样的。
相同与不相同的对象类型上图表格也有列出。
残叶听风
没有,照着老师讲的敲就行
谁的浮生乱了流年
我也是这个问题。 想了一下午才发现。以前把一个低版本的jdbc为了方便放在了JRE里面 ,改的方法就是把旧的jdbc驱动删了 他才会调用你弄的新的
mo_fei
谢谢大家 解决了。
得加上这个:
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
connection.setAutoCommit(true);
}
});
都糊涂了!!!好低级的错误,吃饭回来后才看到。
风中呐喊的幽灵
<property name="connection.url">jdbc:Oracle://127.0.0.1:3306/HiberTest</property>
<property name="connection.driver_class">com.Oracle.jdbc.Driver</property>
你试试行不行
qq_柒分醉_03927370
很明显是你构造方法有问题,即你检查下这代码Student s=(Student)session.get(Student.class,1);还有就是检查下你是怎么测试的,是单个方法测试还是全java测试,
道临
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 64K
MediumBlob 最大16M
LongBlob 最大 4G
小王子的星球0
添加属性之后记得保存。然后在去重建
慕粉2007243408
这个想更改就更改,构造方法主要是方便实例对象,更改了,new一次对象的所有属性就注入了。如果不更改,可以通过setPicture方法添加属性!