Неверный идентификатор: ORA ORA-00904;Hibernate игнорирует сгенерированную Intellij-IDEA аннотацию @Column (name = "") на получателе - PullRequest
0 голосов
/ 27 мая 2019

У меня есть загрузочное приложение Spring (2.1.5), использующее Hibernate (5.1) в качестве моего JPA-провайдера, обращающегося к БД Oracle 11.2.0.4 с помощью Hibernate Dialect Oracle10gDialect

Я создал подобное репо

@Repository
public interface VehStoRepository extends CrudRepository<VehStoEntity, Long>
{
}

и моя сущность выглядит следующим образом

@Entity @Table(name = "VEH_STO", schema = "MySchema") 
public class  VehStoEntity
{
  @Id
  private long eventNo;
  private Long stoType;

  Basic @Column(name = "STO_TYPE", nullable = true, precision = 0) 
  public Long getStoType()
  {
    return stoType;
  }

  public void setStoType(Long stoType)
  {
    this.stoType = stoType;
  }
... 
}

Со многими другими полями и т. Д., Которые я исключил для краткости.У меня было отображение постоянства, сгенерированное Intellj Idea.

Теперь при вызове vehStoRepository.findAll();
я получаю следующую ошибку:

Причина: org.springframework.dao.InvalidDataAccessResourceUsageException: не удалось извлечь ResultSet;SQL [н / п];вложенным исключением является org.hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet

...

Причина: java.sql.SQLSyntaxErrorException: ORA-00904: "VEHSTOENT0 _". "STOTYPE": недопустимый идентификатор

Мой оператор SQL в журналах показывает:

Hibernate: выберите vehstoent0_.stoType в качестве stoType25_0_ из MYSCHEMA.VEH_STO vehstoent0_

Мой вопрос: действительно ли hibernate добавляет ent0 к имени сущности, или это просто странная запись в журнал, или это является причиной ошибки?Это потому, что я не создал схему сопоставления ORM для всех таблиц, только для той, которая мне нужна?Что я делаю не так?

1 Ответ

0 голосов
/ 28 мая 2019

Это было это :

Моя таблица sql была представлением, поэтому я предполагаю, что именно поэтому Intellij не создал аннотацию @Id. Так что я создал @Id вручную над полем, но у Intellij было @Column (name="")

аннотация на геттере, которую Hibernate затем игнорировал.

Я решил проблему, переместив все аннотации в поля.

...