hibernate查询语句:
select distinct ai.documentId from ApproveInfo ai where ai.approver.id = ?
user(用户表) 表结构
userId username password
1 aaa aaa
2 bbb bbb
3 ccc ccc document(公文表) 表结构 documentId(公文标识) title(标题) creatorId(创建者ID) content(公文内容,text大文本二进制类型)
1 中国 1 二进制文件approveInfo(审批信息表) 表结构
appId(审批标识) comment(审批内容) documentId(对应的公文ID) approverId(审批者ID)
1 同意 1 1
2 不同意 1 2
3 还行 1 1
4 待审 1 2 执行
select distinct ai.documentId from ApproveInfo ai where ai.approver.id = 1
得到的查询结果为:
documentId
1
这是我查询根据公文创建者(approver)ID
在审批信息表(approveInfo)中查询没有重复的
公文标识(documentId)外键,document中包含text字段
在mysql上面没有错误
在sqlserver上报错java.sql.SQLException: 不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型
/**
* 公文实体类
* @author Administrator
* @hibernate.class table="SD_workDoc"
*/
public class Document {
/**
* @hibernate.id
* generator-class="native"
*/
private long documentId;
/**
* 标题
* @hibernate.property
*/
private String title;
/**
* 创建者
* @hibernate.many-to-one
* column="creatorId"
*/
private User creator;
/**
* 公文内容,即上传文件的内容,
* 这些上传文件的内容将会被保存到数据库
* @hibernate.property
* type="binary"
* length="99999999"
*/
private byte[] content;}
/**
* 审批历史信息
* @author Administrator
* @hibernate.class table="SD_workAppinfo"
*/
public class ApproveInfo {
/**
* @hibernate.id
* generator-class="native"
*/
private long appId;
/**
* 审批意见
* @hibernate.property
*/
private String comment;
/**
* 被审批的公文
* @hibernate.many-to-one
* column="documentId"
*/
private Document document;
/**
* 审批者
* @hibernate.many-to-one
* column="approverId"
*/
private User approver;
}
如果不用distinct SQL语句怎么写?能达到这样的效果。各位大虾有没有好的解决方法。
sql语句应该这么写啊
select distinct ai.documentId from ApproveInfo ai where ai.approver.id = ?
user(用户表) 表结构
userId username password
1 aaa aaa
2 bbb bbb
3 ccc ccc document(公文表) 表结构 documentId(公文标识) title(标题) creatorId(创建者ID) content(公文内容,text大文本二进制类型)
1 中国 1 二进制文件approveInfo(审批信息表) 表结构
appId(审批标识) comment(审批内容) documentId(对应的公文ID) approverId(审批者ID)
1 同意 1 1
2 不同意 1 2
3 还行 1 1
4 待审 1 2 执行
select distinct ai.documentId from ApproveInfo ai where ai.approver.id = 1
得到的查询结果为:
documentId
1
这是我查询根据公文创建者(approver)ID
在审批信息表(approveInfo)中查询没有重复的
公文标识(documentId)外键,document中包含text字段
在mysql上面没有错误
在sqlserver上报错java.sql.SQLException: 不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型
/**
* 公文实体类
* @author Administrator
* @hibernate.class table="SD_workDoc"
*/
public class Document {
/**
* @hibernate.id
* generator-class="native"
*/
private long documentId;
/**
* 标题
* @hibernate.property
*/
private String title;
/**
* 创建者
* @hibernate.many-to-one
* column="creatorId"
*/
private User creator;
/**
* 公文内容,即上传文件的内容,
* 这些上传文件的内容将会被保存到数据库
* @hibernate.property
* type="binary"
* length="99999999"
*/
private byte[] content;}
/**
* 审批历史信息
* @author Administrator
* @hibernate.class table="SD_workAppinfo"
*/
public class ApproveInfo {
/**
* @hibernate.id
* generator-class="native"
*/
private long appId;
/**
* 审批意见
* @hibernate.property
*/
private String comment;
/**
* 被审批的公文
* @hibernate.many-to-one
* column="documentId"
*/
private Document document;
/**
* 审批者
* @hibernate.many-to-one
* column="approverId"
*/
private User approver;
}
如果不用distinct SQL语句怎么写?能达到这样的效果。各位大虾有没有好的解决方法。
sql语句应该这么写啊
HQL应该看ApproveInfo实体类中的属性,而不是数据库表中的字段。
select distinct ai.documentId from ApproveInfo ai where ai.approver.id = ? hql查询用的对象名 不是数据库的字段名
换成sqlserver后有无换hibernate的方言?
如果还是错误,可能就是sqlserver的二进制数据不支持distinct啦