是什么导致 EntityType.java:677 处的 Hibernate 无限循环?
What causes Hibernate infinite loop at EntityType.java:677?
运行 Hibernate 4.3.5,我在这里得到一个无限循环,导致 WhosebugError:
org.hibernate.type.EntityType.getIdentifierOrUniqueKeyType(EntityType.java:677)
有问题的方法是:
public final Type getIdentifierOrUniqueKeyType(Mapping factory) throws MappingException {
if ( isReferenceToPrimaryKey() || uniqueKeyPropertyName == null ) {
return getIdentifierType(factory);
}
else {
Type type = factory.getReferencedPropertyType( getAssociatedEntityName(), uniqueKeyPropertyName );
if ( type.isEntityType() ) {
type = ( ( EntityType ) type).getIdentifierOrUniqueKeyType( factory );
}
return type;
}
}
有没有人运行以前遇到过这个问题或者知道是什么原因造成的?
想通了,我在两端创建了两个一对一的关系:
<one-to-one name="payment" property-ref="invoice" lazy="proxy" />
<one-to-one name="invoice" property-ref="payment" lazy="proxy" />
使 Hibernate 进入无限循环。我会看看 Hibernate 上是否有关于此的错误报告,因为为此添加检查和更好的错误消息似乎并非不可能。
将关系的一端替换为:
<many-to-one name="payment" column="payment_id" unique="true" lazy="proxy" />
已解决问题。
运行 Hibernate 4.3.5,我在这里得到一个无限循环,导致 WhosebugError:
org.hibernate.type.EntityType.getIdentifierOrUniqueKeyType(EntityType.java:677)
有问题的方法是:
public final Type getIdentifierOrUniqueKeyType(Mapping factory) throws MappingException {
if ( isReferenceToPrimaryKey() || uniqueKeyPropertyName == null ) {
return getIdentifierType(factory);
}
else {
Type type = factory.getReferencedPropertyType( getAssociatedEntityName(), uniqueKeyPropertyName );
if ( type.isEntityType() ) {
type = ( ( EntityType ) type).getIdentifierOrUniqueKeyType( factory );
}
return type;
}
}
有没有人运行以前遇到过这个问题或者知道是什么原因造成的?
想通了,我在两端创建了两个一对一的关系:
<one-to-one name="payment" property-ref="invoice" lazy="proxy" />
<one-to-one name="invoice" property-ref="payment" lazy="proxy" />
使 Hibernate 进入无限循环。我会看看 Hibernate 上是否有关于此的错误报告,因为为此添加检查和更好的错误消息似乎并非不可能。
将关系的一端替换为:
<many-to-one name="payment" column="payment_id" unique="true" lazy="proxy" />
已解决问题。