Я использую реализацию наследования JPA-Hibernate и Hibernate с использованием @Inheritance (strategy = InheritanceType.JOINED) .Exception при выполнении NamedQuery - PullRequest
0 голосов
/ 10 июля 2020

Исключение: java .lang.IllegalArgumentException: тип, указанный для TypedQuery [com.tk.E1], несовместим с типом возврата запроса [class com.tk.User]

Кто-нибудь знает, в чем может быть проблема? Речь идет о преобразовании суперкласса в подкласс с помощью NamedQuery. Большое спасибо!

Пользователь. java

@Entity
@Table(name = "user")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "r")
@NamedQueries({
    @NamedQuery(name = "searchById", query = "SELECT u FROM User u where u.id = :id"))
})

public class User extends MappedObect {
  @Id
  @Column(nullable = false, name = "id")
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  .
  .
  }

Сотрудник1. java

@Entity
@Table(name = "employee1")
@PrimaryKeyJoinColumn(referencedColumnName = "id")
@DiscriminatorValue("E1")
public class Employee1 extends User {
.
.
}

Сотрудник2. java

@Entity
@Table(name = "employee2")
@PrimaryKeyJoinColumn(referencedColumnName = "id")
@DiscriminatorValue("E2")
public class Employee2 extends User {
.
.
}

FetchResult. java

public void getId(Long id) {
TypedQuery<E1> query = entityManager.createNamedQuery("searchById", E1.class);
query.setParameter("id", id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...