我正在使用
Hibernate 5.3.10
作为我在基于Spring引导的项目中的ORM。假设我们有以下实体:
@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; }
}
当我想对上进行多态查询时
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
ID的平等似乎被取代了。发生了什么,我应该做些什么来解决这个问题?
提前感谢。