JPA создает проблемы для себя - PullRequest
3 голосов
/ 20 октября 2011

Я использую JPA / EclipseLink, это исключение

Причина: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Неизвестный столбец «ИМЯ» в «списке полей»

Ниже сгенерированный запрос:

Звоните: ВЫБЕРИТЕ идентификатор, DTYPE, полное имя, ИМЯ, код ОТ ЧЕЛОВЕКА ГДЕ ((accountId =?) И (DTYPE =?)) bind => [1, Сотрудник]

, в которой

@Entity
@Table(name = "PERSON")
public class Person 
        implements Serializable {
    ....

    @Column(name = "fullname", nullable = false)
    public String getFullName() {
        return this.fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }
    ....
}

@Entity
@Table(name="EMPLOYEE")
@PrimaryKeyJoinColumn(name="personId")
public class Employee 
        extends Person
        implements Serializable {

    ....    

    @Column(name="code")
    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
}

У меня нет ни столбца NAME ни в таблице PERSON, ни в таблице EMPLOYEE, почему он случайно добавляет этот столбец в запрос и вызывает проблему для себя (и для меня)?

--- отредактировано ----- У меня нет ни name свойства, ни члена, ни чего-то подобного этому слову ни в PERSON, ни в EMPLOYEE сущности.

1 Ответ

2 голосов
/ 20 октября 2011

NAME выглядит как значение по умолчанию (так как вы, кажется, устанавливаете имена полей в нижнем регистре), так что проверьте методы getName / setName в классе Person. Вы используете файл orm.xml?

Если вы все еще не можете найти проблему, включите ведение журнала EclipseLink в Finest: и проверьте журнал на этапах предварительного развертывания / развертывания. Обработка EclipseLink для классов Person и Employee должна показать, почему она определяет, что должно быть поле NAME.

...