Рекурсивная ссылка в таблице с составным идентификатором дает проблему с отображением - PullRequest
0 голосов
/ 06 сентября 2011

Теперь я действительно потерян ... или запутался ... Я получил этот класс

            package co.com.adv.Salarix2.core.nominaprocessor.model;
            // Generated 23/08/2011 03:13:44 PM by Hibernate Tools 3.2.4.GA

            import javax.persistence.Column;
            import javax.persistence.Embeddable;

            /**
             * NodoId generated by hbm2java
             */
            @Embeddable
            public class NodoId implements java.io.Serializable {

                private int idArbol;
                private int idNodo;
                private int idHoja;

                public NodoId() {
                }

                public NodoId(int idArbol, int idNodo, int idHoja) {
                    this.idArbol = idArbol;
                    this.idNodo = idNodo;
                    this.idHoja = idHoja;
                }

                @Column(name = "Id_Arbol", nullable = false)
                public int getIdArbol() {
                    return this.idArbol;
                }

                public void setIdArbol(int idArbol) {
                    this.idArbol = idArbol;
                }

                @Column(name = "Id_Nodo", nullable = false)
                public int getIdNodo() {
                    return this.idNodo;
                }

                public void setIdNodo(int idNodo) {
                    this.idNodo = idNodo;
                }

                @Column(name = "Id_Hoja", nullable = false)
                public int getIdHoja() {
                    return this.idHoja;
                }

                public void setIdHoja(int idHoja) {
                    this.idHoja = idHoja;
                }

                public boolean equals(Object other) {
                    if ((this == other))
                        return true;
                    if ((other == null))
                        return false;
                    if (!(other instanceof NodoId))
                        return false;
                    NodoId castOther = (NodoId) other;

                    return (this.getIdArbol() == castOther.getIdArbol())
                            && (this.getIdNodo() == castOther.getIdNodo())
                            && (this.getIdHoja() == castOther.getIdHoja());
                }

                public int hashCode() {
                    int result = 17;

                    result = 37 * result + this.getIdArbol();
                    result = 37 * result + this.getIdNodo();
                    result = 37 * result + this.getIdHoja();
                    return result;
                }

                public String getStringRep() {
                    return this.idArbol + "-" + this.idHoja + "-" + this.idNodo;
                }

            }

Если я оставлю последний метод ...

                public String getStringRep() {
                    return this.idArbol + "-" + this.idHoja + "-" + this.idNodo;
                }

Он выбрасывает картуисключение:

ЗАДЕРЖКИ В ОШИБКЕ: Развертывание "persistence.unit: unitName = Salarix2.ear / Salarix2.jar # Salarix2" содержит ошибку из-за следующих причин: org.hibernate.AnnotationException: referencedColumnNames (Id_Arbol, Id_ Nodo, Id_Hoja) из co.com.adv.Salarix2.core.nominaprocessor.model.Nodo.nodo ссылается на co.com.adv.Salarix2.core.nominaprocessor.model.Nodo, не сопоставленный с одним свойством

но если я удаляю метод, он развертывается нормально .... Почему это происходит ???

1 Ответ

0 голосов
/ 07 сентября 2011

Это потому, что Hibernate использует Reflection и считает, что классы являются "бобами".Бины имеют стандартную номенклатуру для методов получения и установки. Если у вас есть метод получения, такой как getStringRep, hibernate попытается найти свойство с именем StringRep, которого у вас нет - чтобы избежать этого, просто используйте нестандартные имена для непостоянных свойств,например stringRep() вместо getStringRep() (или используйте аннотацию @Transient над геттером).Это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...