原来是数据库编号的问题,在创建数据库的时候用utf8编码创建就可以了
已解决
我是hibernate 5 数据库mysql
使用mysql数据库时容易出现乱码 ,在连接的url地方这样写试试,我的可以
<property name="connection.url"> jdbc:mysql:///stu_manager?useUnicode=true&characterEncoding=utf-8 </property>
//把表示生成表结构第一个true改为false,把第二个表示输出SQL语句也改成false
export.create(false, false);
我是单独建了个hibernate工具包 ,要获得session对象直接调用该方法里的getSession()方法,关闭资源用 closeSession()方法,这样做避免代码重复写。当然你也可以在方法中加个开启事物和提交事物的方便。
public class HibernateUtil {
private static final Configuration config;
private static final SessionFactory factory;
static{
config = new Configuration().configure();
factory = config.buildSessionFactory();
}
public static Session getSession(){
return factory.openSession();
}
public static void closeSession(Session session) {
if(session!=null)
session.close();
}
}
您好,你可以试试这个:
在hibernate.hbm.xml中加上
<property name="javax.persistence.validation.mode">none</property>
希望能帮到你
你可以利用代理的设计模式,可以改变validate的返回值
数据库设计有问题
表的生成策略是不是create,是的话每执行一次,会先将之前的表删除再重新创建新表,建议改成update
我的是把hibernate.cfg.xml里面的方言换成了<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>就好了,好像因为我的mysql里面存储引擎是engine=innodb,所以方言哪里换成这个对应的就好了。
偶然看到!虽然不是我问的,但是却解决了 我的问题,谢谢!
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=utf8 </property>我把这条语句修改了一下就好。
web.xml里面加个过滤器就不会出现中文乱码问题呢
students.hbm.xml 里面<id name="sid" type="java.lang.String"> 这样就能添加