Я использую Hibernate 5.3.10
в качестве ORM в проекте, основанном на загрузке Spring. Предположим, что у нас есть следующие сущности:
@Entity
@Table(name = "parent")
@Inheritance(strategy = InheritanceType.JOINED)
public class Parent {
@EmbeddedId
private EmbId id;
public Id getId() { return id; }
public void setId(Id id) { this.id = id; }
}
@Entity
@Table(name = "child")
@PrimaryKeyJoinColumns({
@PrimaryKeyJoinColumn(name = "id"),
@PrimaryKeyJoinColumn(name = "date_time")
})
public class Child {
@EmbeddedId
private EmbId id;
private String name;
public Id getId() { return this.id; }
public void setId(Id id) { this.id = id; }
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
}
и встраиваемый ключ следующим образом:
@Embeddable
public class EmbId {
@Column(name = "id")
private Long id;
@Column(name = "date_time")
private Date dateTime;
public Long getId() { return this.id; }
public void setId(Long id) { this.id = id; }
public Date getDateTime() { return this.dateTime; }
public void setDateTime(Date dateTime) { this.dateTime = dateTime; }
}
Когда я хочу полиморфировать c запрос к Child
сущности, JPA лица с ORA-00932 Inconsistent datatypes: expected TIMESTAMP got NUMBER
и следующие sql видели в консоли:
select child0_.id as date_time1_25_0, child0_.date_time as id2_25_0, child0_1_.name as name3_3_0 from my_schema.child child0_ inner join my_schema.parent child0_1_ on child0_.id = child0_1_.date_time and child0_.date_time = child0_1_.id
Кажется, что равенство идентификаторов смещено. Что случилось и что я должен сделать, чтобы решить эту проблему?
Заранее спасибо.