我有一些Java代碼,運行的SQL查詢是這樣的:
SELECT DISTINCT ven.enterprise_network_id, st.*
FROM研究 st
inner join v_enterprise_network_members ven on st.ib_id = my_ib_id
WHERE ven.ib_id=:IB_ID
AND (st.myvrn_expiration_date IS NULL OR st. myvrn_expiration_Date >= sysdate)
OR BY st.st study_date DESC
我明白了一切,除了我不明白什么是st.ib_id=my_ib_id。它是什么意思?這是整個方法,以防萬一,如果它有幫助的話:
public List< Study> searchRepository(StudySearchCriteria criteria, boolean isEnterpriseNetwork,
boolean isExactNameMatch) {
String selectForNone = null;
String studyStatus = null;
studyStatus = verifyStudyStatus(criteria, studyStatus, isEnterpriseNetwork)。
if (c criteria.contains(SearchField.STUDY_STATUS) && StringUtils.isBlank(studyStatus)) {
return new ArrayList<>()。
}
if (StringUtils.isNotBlank(studyStatus) && studyStatus.contains(StudyPacsState.State.NONE.toString() ) {
selectForNone = "DISTINCT {st.*}, st.study_date as stdate FROM studies st"/span>;
}
StringBuffer select = new StringBuffer(512)。
StringBuffer where = new StringBuffer(512)。
StringBuffer orderBy = new StringBuffer(selectForNone != null ? "" : " ORDER BY st.study_date DESC ")。)
select.append("SELECT") 。
if (c criteria.containsWildcard()) {
select.append(queryHint)。
}
if (!isEnterpriseNetwork) {
select.append(selectForNone != null ? selectForNone : "DISTINCT {st.*} FROM studies st"/span>) FROM研究st")。)
where.append(" WHERE st.ib_id=:IB_ID AND ").append(myVrnSql)。
}
else {
///////////////////////// HERE IS WHERE my_ib_id is.
select.append("DISTINCT ven.enterprise_network_id, {st.*} FROM studies st") From studies st")
.append(" inner join v_enterprise_network_members ven on st.ib_id=my_ib_id ");
////。 doctag">/////////////////////
where.append(" WHERE ven.ib_id=:IB_ID AND ").append(myVrnSql)。
}
StringBuilder queryForNone = selectForNone != null ? new StringBuilder(" UNION") : new StringBuilder(" ") 。
createStudyStatusQuery(criteria, isExactNameMatch, studyStatus, where, queryForNone, false);
buildStudyQuery(criteria, select, where, orderBy, isEnterpriseNetwork, isExactNameMatch, true, false) 。
if (c criteria.contains(SearchField.STUDY_STATUS)) {
select.append(" , smr_study_pacs_state sps ") 。
}
SQLQuery sq = null。
查詢hq = null;
if (isEnterpriseNetwork) {
sq = getSession().createSQLQuery(select.toString() where.toString()) 。
sq.addEntity("st", Study.class).addScalar("enterprise_network_id", StandardBasicTypes.Long)
.setCacheable(false).setCacheRegion("vrnstudysearch")。
}
else {
sq = getSession().createSQLQuery(select.toString() where.toString() queryForNone.toString() )。)
sq.addEntity("st", Study.class).setCacheable(false).setCacheRegion("vrnstudysearch") 。
if (selectForNone != null) {
sq.addScalar("stdate", StandardBasicTypes.TIMESTAMP) 。
}
}
hq = sq;
hq.setLong(SearchField.IB_ID.toString(), (Long) criteria.get(SearchField.IB_ID) )。
supplyParameters(criteria, hq, isExactNameMatch)。
logger.info("Query searchRepository {}", hq.getQueryString())。
List<Study> result = null;
if (!isEnterpriseNetwork) {
if (selectForNone != null) {
List<?> returned = hq.list();
if (return != null) {
result = new ArrayList<Study>()。
for (Object n : returned) {
Object[] tuple = (Object[] ) n;
Study st = (Study) tuple[0]。
result.add(st)。
}
}
}
else {
result = hq.list();
}
}
else {
List<?> returned = hq.list();
if (return != null) {
result = new ArrayList<Study>()。
for (Object n : returned) {
Object[] tuple = (Object[] ) n;
Study st = (Study) tuple[0]。
st.setEnterpriseNetworkId((Long) tuple[1)。
result.add(st)。
}
}
}
logger.debug(" returned " (result == null ? 0 : result.size())。)
return 結果。
}
uj5u.com熱心網友回復:
st.ib_id=my_ib_id是連接條件 - 它定義了你在查詢中連接的兩個表之間的關系。據推測,my_ib_id是這些表中的一個列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/306836.html
標籤:
