Tag: 过冬

保存,更新,saveOrUpdate,合并方法在Session中的区别?

我是Hibernate的新手,上周经历了Hibernate教程。 我对Session类中的方法save,update,saveOrUpdate和merge有一些疑问。 这些是: 保存方法:用于将新创build的对象插入到数据存储中。 (基本上这个标识符的值是0)。 就像我创build一个新客户并调用保存操作一样,它会将其保存在数据存储中并生成标识符。 它是否正确? 如果我们调用保存已经持久化的对象不知道会发生什么? 更新方法:用于更新数据存储区中已经存在的对象(基本上标识符的值将是非零值)。 就像我加载一个新的客户并在更新某个字段值后调用更新操作,它将在数据存储中更新它。 根据我的理解,它应该失败,并有一些例外,因为每个API更新是针对分离的对象。 它是否正确? 如果是的话,我们应该调用什么来更新在同一个会话中的对象(我的意思是如果对象不分离)。 另一点是:如果我们调用更新新创build的对象会发生什么? saveOrUpdate方法:它会基于未保存的值检查(它必须根据标识符为零或非零值进行操作),因此如果我们有持续的客户对象,并更新其姓氏并创build一个新的帐户,然后saveOrUpdate将照顾它。 我理解正确吗? 合并方法:它将像更新一样行动,但是如果持久对象具有相同的标识符已经在会话中,它将更新持久对象中的分离对象值并保存。 但是,如果当前没有与会话关联的持久实例,则会从数据存储加载持久对象,然后更新已加载持久对象中已分离对象的值,然后进行更新。 我也得到了吗?

非空属性引用空值或瞬态值

面对用hibernate保存父/子对象的麻烦。 任何想法将不胜感激。 org.hibernate.PropertyValueException: not-null property references a null or transient value: example.forms.InvoiceItem.invoice at org.hibernate.engine.Nullability.checkNullability(Nullability.java:100) …. (truncated) hibernate映射: <hibernate-mapping package="example.forms"> <class name="Invoice" table="Invoices"> <id name="id" type="long"> <generator class="native" /> </id> <property name="invDate" type="timestamp" /> <property name="customerId" type="int" /> <set cascade="all" inverse="true" lazy="true" name="items" order-by="id"> <key column="invoiceId" /> <one-to-many class="InvoiceItem" /> </set> </class> <class name="InvoiceItem" table="InvoiceItems"> <id […]

检索没有HQL的表的所有行?

我正在使用Hibernate 4,并希望简单列出表的所有行。 我find的所有解决schemebuild议使用类似“从表名”,但我想避免在string中硬编码表名。

org.hibernate.PersistentObjectException:传递给persist的分离实体

我已经成功地用hibernate写了我的第一个主子例子。 几天后,我又拿了一次,升级了一些图书馆。 不知道我做了什么,但我永远不能让它再次运行。 有人会帮我找出错误信息返回的代码中出了什么问题: org.hibernate.PersistentObjectException: detached entity passed to persist: example.forms.InvoiceItem at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:127) at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:799) at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:791) …. (truncated) hibernate映射: <hibernate-mapping package="example.forms"> <class name="Invoice" table="Invoices"> <id name="id" type="long"> <generator class="native" /> </id> <property name="invDate" type="timestamp" /> <property name="customerId" type="int" /> <set cascade="all" inverse="true" lazy="true" name="items" order-by="id"> <key column="invoiceId" /> <one-to-many class="InvoiceItem" /> </set> </class> <class […]