Имеются такие таблицы:
create table A (
ID uuid not null,
primary key (ID)
);
create table B (
ID uuid not null,
ANOTHER_ID varchar(100) not null,
primary key (ID)
);
create table Ids (
ID uuid not null,
ANOTHER_ID varchar(100) not null,
primary key (ID)
);
У меня есть сущности A
, B
и Ids
.
public class Ids {
@Id
@Column(name = "ID")
private UUID id; // this is id of A
@Column(name = "ANOTHER_ID", unique = true)
private String anotherId;
}
public class A {
@Id
@Column(name = "ID", length = 60)
private UUID id;
@OneToOne
@JoinColumn(name = "ID", nullable = false)
private Ids ids;
}
public class B {
@Id
@Column(name = "ID", length = 60)
private UUID id;
@ManyToOne
@JoinColumn(name = "ANOTHER_ID", referencedColumnName = "ANOTHER_ID", nullable = false)
private Ids ids;
}
, вызывающие метод findMyStuff () из такого хранилища:
public interface BRepository extends JpaRepository<B, UUID> {
@Query("select a.id, b.id "
+ "from B b "
+ "join A a on a.ids.id = b.ids.id ")
List<Object[]> findMyStuff();
}
генерирует недопустимый SQL, например:
select b0_.ID as col_0_0_, a1_.ID as col_1_0_
from B b0_
inner join IDS ids3_ on b0_.ANOTHER_ID=ids3_.ANOTHER_ID
inner join A a1_ on (ids2_.ID=ids3_.ID)
, поэтому происходит сбой с: PSQLException: ERROR: missing FROM-clause entry for table "ids2_"
, почему в этом случае hibernate генерирует недопустимый SQL? Я использую hibernate 5.4.3.Final.