我有一个遗留的表有很多列,我试图限制休眠的列数。如果我只是从“from”子句运行到最后,它可以正常工作,加载每一列,但是当我添加“Select a.col1,a.col2 ...”等时,我得到一个对象数组而不是bean的实例。休眠选择子句不起作用
我尝试添加一个结果变压器,但它似乎认为第一列被命名为“0”。我猜想在结果转换器进入画面时已经损坏了。我想知道,如果可能有一个案件不匹配,所以我把所有东西都变成了大写,但这并没有帮助。
UPDATE: 这里的SQL:
Select a.SZ_ABND_NO, a.ASSET_VAL, a.FO_TYP, a.ASSET_ID, a.AGCY_RGN_CD, a.LIT_AGCY_CD, a.ASSET_TYP, a.SZ_AGCY_CD, a.SUB_OFC_ID, a.OFC_ID, a.CA_ID_AGCY, a.PROC_DIST from FlatAssetT a where a.ASSET_ID in (:assetList) order by a.ASSET_ID
的bean是巨大的。这12列是数百(是复数)。我会给出一个选定的代码片段。
@Entity
@Table(name = "FLATASSET_T", schema="K702PRDR")
public class FlatAssetT {
@Column(name="ADPT_DT", nullable=false)
private Date ADPT_DT;
@Id
@Column(name="ASSET_ID", nullable=false)
private String ASSET_ID;
@Column(name="ASSET_ID_TYP", nullable=false)
private String ASSET_ID_TYP;
@Column(name="SZ_ABND_NO", nullable=false)
private String SZ_ABND_NO;
[etc.]
public String getSZ_ABND_NO() {
return SZ_ABND_NO;
}
public void setSZ_ABND_NO(String arg) {
this.SZ_ABND_NO=arg;
}
public String getASSET_ID() {
return ASSET_ID;
}
public void setASSET_ID(String arg) {
this.ASSET_ID=arg;
}
public Date getADPT_DT() {
return ADPT_DT;
}
public void setADPT_DT(Date arg) {
this.ADPT_DT=arg;
}
public String getASSET_ID_TYP() {
return ASSET_ID_TYP;
}
public void setASSET_ID_TYP(String arg) {
this.ASSET_ID_TYP=arg;
}
[etc.]
}
你可以帮助我们发布你想要选择的bean吗?也许当前表的SQL创建?此外,不要忘记提及,如果你使用纯粹的JPA或Hibernate API,它是HQL还是JPQL?使用hibernate标准API?它帮助我们尝试和调试问题:) –
@André - 使用HQL。该表不是由休眠创建的。它是一个遗留表格。用字符串用户输入密钥(asset_id)非常简单。除了它存在以外,我对标准API一无所知。我听说“预测”在这里很有帮助,但我不知道如何。 – user1187719