#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. Это то, что я ищу. «Лучший» спасает меня! Спасибо!