JPA создает проблемы для себя

#java #mysql #jpa-2.0 #eclipselink

#java #mysql #jpa-2.0 #eclipselink

Вопрос:

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

Вызвано: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: неизвестное имя столбца в списке полей

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

Вызов: ВЫБЕРИТЕ идентификатор, DTYPE, полное имя, ИМЯ, код ОТ PERSON WHERE ((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 из объектов nor.

Комментарии:

1. У вас есть name свойство в вашей Person сущности? Если да, то вы можете использовать @Transient аннотацию к нему.

Ответ №1:

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

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

Комментарии:

1. Это то, что я ищу. «Лучший» спасает меня! Спасибо!