【发布时间】:2015-02-18 04:36:59
【问题描述】:
我正在尝试将这些 SQL 语句用于 QueryDSL 调用。
select t.asd_id, count(*) as count from asset_object t
left join asset_data ad on (t.asd_id = ad.asd_id)
where
exists (select * from assetobject_parents p
where t.aso_id = p.aso_id and p.ctd_id = 1)
group by t.asd_id
order by count(*) desc, t.asd_id asc
谁能给我一个提示或解决方案?
这是我的域(摘录):
@Entity
public class AssetObject {
@Id
@Column(name = "ASO_ID")
private Long asoId;
@ManyToMany
@OrderColumn(name = "ASP_ORDER")
@JoinTable(name = "ASSETOBJECT_PARENTS", joinColumns = { @JoinColumn(name = "ASO_ID", referencedColumnName="ASO_ID") }, inverseJoinColumns = { @JoinColumn(name = "CTD_ID", referencedColumnName="CTD_ID") })
private List<CategoryData> parents = new ArrayList<CategoryData>();
}
@Entity
public class CategoryData {
@Id
@Column(name = "CTD_ID")
private Long ctdId;
}
@Entity
@Table(name = "ASSET_DATA")
public class AssetData {
@Id
@Column(name = "ASD_ID")
private Long asdId;
@ManyToMany
@JoinTable(name = "ASSETDATA_CATEGORYDATA", joinColumns = { @JoinColumn(name = "ASD_ID", referencedColumnName="ASD_ID") }, inverseJoinColumns = { @JoinColumn(name = "CTD_ID", referencedColumnName="CTD_ID") })
private List<CategoryData> categoryDataList = new ArrayList<CategoryData>();
}
希望这会有所帮助。我认为重点是无法使用 querydsl 访问连接表。
【问题讨论】:
-
您自己尝试过吗?你在哪里被打动了?
-
是的,我试过了。但我在很多方面都失败了:assetobject_parents 上存在 -> 这是一个多对多关系的连接表,选择一个 id 并从一个表中计数,...