hibernate hql 使用关联对象查询的问题!

a3226988 2017-01-09 05:53:29

public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
String hql = "from Student where stuclass = ?";
Query query = session.createQuery(hql);
query.setParameter(0, new Stuclass());
query.list();
}


按照关联对象查询,如果管理对象的主键为空,那么就会报错!但错误的信息居然是
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: entity.Stuclass
保存出错!求解?
...全文
448 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
LHuiMail 2017-01-10
  • 打赏
  • 举报
回复
引用 6 楼 a3226988 的回复:
[quote=引用 5 楼 LHuiMail 的回复:] 建议先学学Hibernate的基础知识,不会的情况下不要瞎写,瞎写的代码不要让别人看。
愿赐教![/quote] 不好意思,昨天干的太晚,发了几句牢骚。你可以看看Hibernate实体的三种状态,也许对你有帮助
  • 打赏
  • 举报
回复
源码有关Hibernate的任何问题可以在这里提问:https://hibernate.atlassian.net/projects/HHH/issues/HHH-11375?filter=allopenissues。
  • 打赏
  • 举报
回复
如果你是抱着研究的方向去做的而不是解决问题的方向,你可以好好研究下Hibernate的源码;就算你说的new Stuclass(1)是可以通过查询的,但是这也违背了Hibernate的初衷;只不过没有很严格进行检查控制而已;我不太清楚你所用的版本是多少,有可能在不同的版本表现方式有不同的地方。
LHuiMail 2017-01-10
  • 打赏
  • 举报
回复
你的这段代码有什么意义呢,让hibernate根据一个数据库中不存在的实体查找?从逻辑上就有问题。
a3226988 2017-01-10
  • 打赏
  • 举报
回复
引用 5 楼 LHuiMail 的回复:
建议先学学Hibernate的基础知识,不会的情况下不要瞎写,瞎写的代码不要让别人看。
愿赐教!
LHuiMail 2017-01-10
  • 打赏
  • 举报
回复
建议先学学Hibernate的基础知识,不会的情况下不要瞎写,瞎写的代码不要让别人看。
a3226988 2017-01-09
  • 打赏
  • 举报
回复
引用 2 楼 littlebrain4solving 的回复:
HQL的根据对象条件查询,其参数对象必须是一个已持久化对象(此对象必须要先查询或先保存起来);new Stuclass() 只是一个普通对象,并没有持久化状态,没有纳入持久化管理。
但是如果query.setParameter(0, new Stuclass(1));随便添加一个主键就能实现查询了,只不过查不到数据而已
  • 打赏
  • 举报
回复
HQL的根据对象条件查询,其参数对象必须是一个已持久化对象(此对象必须要先查询或先保存起来);new Stuclass() 只是一个普通对象,并没有持久化状态,没有纳入持久化管理。
nikyotensai 2017-01-09
  • 打赏
  • 举报
回复
主键可以为空吗

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧