这是我的实体: -
public class ArticleType extends BaseEntity implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "art_typ_index")
private Integer artTypIndex;
//@Basic(optional = false)
@Column(name = "art_typ_code", nullable = false)
private String artTypCode;
@OneToMany(mappedBy = "artArtTypIndex", fetch = FetchType.LAZY)
private Set<Article> articleSet;
public ArticleType()
{
}
public ArticleType(Integer artTypIndex)
{
this.artTypIndex = artTypIndex;
}
public ArticleType(Integer artTypIndex, String artTypCode)
{
this.artTypIndex = artTypIndex;
this.artTypCode = artTypCode;
}
public Integer getArtTypIndex()
{
return artTypIndex;
}
public void setArtTypIndex(Integer artTypIndex)
{
this.artTypIndex = artTypIndex;
}
public String getArtTypCode()
{
return artTypCode;
}
public void setArtTypCode(String artTypCode)
{
this.artTypCode = artTypCode;
}
@XmlTransient
public Set<Article> getArticleSet()
{
return articleSet;
}
public void setArticleSet(Set<Article> articleSet)
{
this.articleSet = articleSet;
}
}
我想检查一下,如果特定的文章类型是否存在任何文章
我试过这个HQL query
: -
SELECT
count(articleType.artTypIndex)
FROM
ArticleType articleType
join fetch articleType.articleSet article
where articleType.artTypCode = ?
但是这个查询给了我编译错误: -
org.hibernate.QueryException: 查询指定的连接提取,但提取的关联的所有者不在选择列表中 [FromElement {explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias = article,role = com.alstom.autofie2.entity.ArticleType.articleSet,tableName = tbl_article,tableAlias = articleset1_,origin = tbl_article_typ e articletyp0_,columns = {articletyp0_.art_typ_index,className = com.alstom.autofie2.entity.Article}}]
我不明白是什么问题?
谢谢。
答案 0 :(得分:0)
问题是你是在选择计数而不是实体,但是你正在加入。
您不需要急切地使用未获取的实体加载集合。
尝试使用加入。
或者这可能也有用
选择 articleType,计数(articleType.artTypIndex) 从 ArticleType articleType join fetch articleType.articleSet文章 articleType.artTypCode =?