1
我有兩個實體使用表達
@Entity
@Table(name="MASTER")
public class Master {
@Id
@Column(name="MASTER")
private Integer id;
@OneToMany(mappedBy="master")
private List<Detail> details;
...
}
@Entity
@Table(name="DETAIL")
public class Detail {
@ManyToOne
@JoinColumn(name="MASTER",referencedColumnName="MASTER")
private Master master;
...
}
的表MASTER
和DETAIL
,其中那些實體persisted
,真的老了dBASE表(.dbf files with .mdx indexes)
有一些特殊性,最糟糕的是那種指標,他們使用。
表詳細信息有一個基於表達式「str(MASTER,7)」的索引,並且該索引僅在jdbc驅動程序使用,如果sql sentece使用相同的公式。
通過上面的代碼,即執行檢索主人的細節sql
聲明
SELECT MASTER, ..., FROM DETAIL WHERE MASTER = ?
,並且不使用index
,這樣的表現是非常非常糟糕。
有沒有我可以註釋類,以便執行的SQL是
SELECT MASTER, ..., FROM DETAIL WHERE STR(MASTER,7) = STR(?,7)?
我不介意使用eclipselink
擴展(或移動到hibernate
)如果我有什麼辦法。
如果這是不可能的,那麼最好的選擇是什麼?