这可能与this重复,但在那里没有得到适当的解决方案。 我使用命名查询来获取如下的一些细节并返回字符串的列表,
<sql-query name="getContactIds">
<return-scalar column="id" type="string" />
<![CDATA[Select c.id as id from CRM.dbo.contact c where is_deleted=0]]>
</sql-query>
但是在调用此查询时,我收到java.lang.RuntimeException:java.lang.ClassCastException: java.lang.String无法强制转换为java.util.Map
SearchTemplate searchTemplate = new SearchTemplate();
searchTemplate.setNamedQuery("getContactIds");
searchTemplate.setNamedQueryResultType(String.class);
salesforceContactIds=contactDao.getSfContactIds(searchTemplate);
感谢这方面的任何帮助。
答案 0 :(得分:2)
JPQL是Hibernate / JPA的查询语言。它适用于实体而不是表格。因此,如果您有联系 java实体,其字段已删除,并且已映射到联系人表
@Entity
@Table(name = "CONTACT", schema = "name")
public class Contact {
@Id
private Integer id;
@Column(name = "is_deleted", nullable = false)
private boolean deleted;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
然后选择应该像
select * from Contact c where c.deleted = 0
然后从联系获取ID或其他必填字段。
如果要使用SQL语法,则需要使用NamedNativeQuery