hibernate注意事项
来源:互联网 发布:朴素贝叶斯算法实现 编辑:程序博客网 时间:2024/04/30 00:10
1. org.hibernate.hql.ast.QuerySyntaxException: unexpected token: member near line 1, column 6 [from member wherememberName=?]
这是hsl语句写错。
//form后为类名,而不是数据库名,hibernate设计目的就是让java代码与数据库分离。
Query query=session.createQuery("from Member where memberName=?");
2. org.hibernate.MappingException: Unknownentity:
如果发现这样的异常,很可能是没有把对象的mapping文件加入到hibernate.cfg.xml文件中。
INFO : org.hibernate.tool.hbm2ddl.SchemaUpdate - schema updatecomplete
org.hibernate.MappingException: Unknownentity: com.gathershell.domain.Manager
atorg.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:628)
atorg.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1366)
atorg.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
atorg.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
atorg.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
atorg.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
atorg.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563)
atorg.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
3. could not initialize proxy - no Session
这是懒加载所致,要禁用它:<many-to-onename="bigType"lazy="false"></many-to-one>
写在类上是不行的,<classname="SmallType"table="smallType"lazy="false">,这样不行。
报的异常是:
ERROR: org.hibernate.LazyInitializationException - could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
atorg.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132)
atorg.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:174)
atorg.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
后来我发现这在有时候并不是自己所想要模式,我在写完domain对象后,用eclipse自动生成toString()方法,这里面也包含了对象属性,即orderForm。
private int id;
private OrderForm orderForm;
private int goodsId;
private float price;
private int number;//订货数量
private Date createTime;//订货时间
@Override
public String toString() {
return"OrderDetail id=" +id +", orderForm=" +orderForm +", goodsId="
+ goodsId +", price=" +price +", number=" +number
+ ", createTime=" +createTime;
}
然后在测试时,用System.out.println(orderDetail);出现了上面这种错误。所以把toString()中的对象属性去掉就可以了。
4. Initial SessionFactory creation failed.org.hibernate.HibernateException: Unable to instantiate default tuplizer[org.hibernate.tuple.entity.PojoEntityTuplizer]
这个异常一般是你的mapping文件写错了,检查属性类型,名称是否有错。
我遇到这个是domain类是写private Date createDate;而在配置文件中写的是<property name="createTime" type="java.util.Date"></property>,然后把java文件中的属性名改为createTime就可以了。
5. MySql数据库中不能用leave作字段名
Leave在MySql数据库中是一个保留关键字,如有类的属性名为leave,在配置文件中要明确指定另一个对应的字段名<propertyname="leave" column="leaveTime"></property>
-----------------------持续更新中--------------------------
- Hibernate注意事项
- hibernate注意事项
- hibernate注意事项
- 【Hibernate】注意事项
- Hibernate注意事项
- Hibernate注意事项
- hibernate缓存使用注意事项
- hibernate之注意事项
- spring 整合Hibernate注意事项
- Hibernate 集合过滤注意事项
- 使用Hibernate注意事项一则
- Hibernate查询 注意事项
- hibernate使用注意事项
- hibernate中用jdbc注意事项
- Spring、Hibernate整合注意事项
- hibernate配置二级缓存注意事项
- Hibernate的事务注意事项
- Spring集成Hibernate注意事项
- hdu 4722 GoodNumbers
- Linux Netcat 命令——网络工具中的瑞士军刀
- cocos2d-x IOS 和Android播放视频(包括网络视频)
- Android phone 拨号UI
- 谷歌翻译的用户使用量大约为2亿次
- hibernate注意事项
- Android4.1电话呼叫界面布局设计:
- 【醒目】分享一个关于遍历SD卡中所有图片的方法
- jquery好素材
- C# 调用C 语言
- 推荐学习Python的网站
- 《matlab实用教程》书评
- 抽象类和接口
- 数组二算法