|
8
|
| Jason Barile · 技术社区 · 16 年前 |
|
|
1
8
因为Tagname是ID,所以您正在运行NHibernate的标识映射。它的标识映射已经知道一个具有相同ID的对象,所以它会给出这个异常。 您可能想尝试一些方法,看看该标记是否已经存在于该会话中,如果已经存在,那么将该预先存在的标记与第二个日志相关联。 psuedo代码示例:
这篇博文会给你一个详细的解释: NHibernate - Cross session operations |
|
2
4
你这样做的方式不是我这样做的,而是如何解决你的问题。通常,在面向对象编程中,以下两个对象不相等:
您已经创建了两个状态相同的独立对象,但它们是两个不同的对象,因此如果您将它们进行相等比较,那么它们就不相同了。显然,当涉及到nHibernate时,这些对象实际上是相同的实体。 我们通过覆盖对象类的2个方法来解决nhibernate的问题。 getHashCode()和equals()。 getHashCode()基本上返回基于对象状态的唯一哈希代码。 equals()比较两个对象是否相等 这样地:
基本上,gethashcode将对象类型和标记名称连接为字符串ie
equals()然后将第一个对象的getHashCode()结果与第二个要测试相等性的对象的getHashCode()结果进行比较。如果对上面定义的两个对象执行此操作,两个哈希代码将相同,因此equals()的比较将为真。当NHibernate测试两个对象的内部工作是否相等时,它将确定它们是相同的,它应该解决您的问题。 |
|
|
Nico Pizzo · 子查询上的nhibernate联接 8 年前 |
|
|
YMC · 无法在Nhb 4中构建只有特定字段可供选择的2个表联接 8 年前 |
|
|
Stu · 具有特定类型的字符串外键的NHibernate映射 8 年前 |
|
|
Zout · 为Hibernate的HiLo算法管理的列生成ID 8 年前 |