是什么导致 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" />

已解决问题。