我已經繼承了一個應用程序,該應用程序從Oracle DB中檢索一些數據,然後將其轉換爲XML以供其他應用程序導入。後面爲什麼它需要以這種方式做的理由是有點長篇大論,但總之,我們有一個看起來是這樣的數據庫:如何使用hibernate逐列分組,並檢索所有列
ID | CHILD_ID | IRRELEVANT_COLUMN
1 | 100 | A
2 | 200 | E
2 | 200 | B
3 | 300 | G
3 | 300 | ZZ
3 | 300 | WHO_KNOWS_WHAT_MIGHT_END_UP_HERE
我們只使用值ID & CHILD_ID - 以前有沒有IRRELEVANT_COLUMN,所以每個ID是唯一的,用於檢索從DB中的數據如下代碼:
public static List<RecordInfo> getRecordInfo() {
List<RecordInfo> recordInfo = null;
Session session = HibernateUtils.getSessionFactory().openSession();
try {
recordInfo = session.createCriteria(RecordInfo.class)
.list();
}
catch (Exception e) {
logger.error("Error reading database", e);
}
return recordInfo;
}
RecordInfo.java:
public class RecordInfo {
private Long id;
private Event event;
private Integer childId;
//Snip - Public Getters and Setters below.
}
RecordInfo.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.hewhowas.model.RecordInfo" table="NIGHTMARE_TABLE" lazy="false">
<id name="id" type="long" column="ID">
<generator class="native"/>
</id>
<property name="childId">
<column name="CHILD_ID"/>
</property>
<many-to-one name="event" class="com.hewhowas.model.Event" column="CHILD_ID" fetch="join"/>
</class>
我已經嘗試用突起對數據進行分組的ID - 但後來只檢索列ID,沒有別的 - 我得到轉換異常時試圖轉換檢索RecordInfo對象。
有什麼辦法,我可以使用標準和預測,以返回結果集類似於:
ID | CHILD_ID | IRRELEVANT_COLUMN
1 | 100 | A
2 | 200 | B
3 | 300 | WHO_KNOWS_WHAT_MIGHT_END_UP_HERE
在「IRRELEVANT_COLUMN」的信息是不以任何方式使用 - 從而使檢索的準確記錄不要以任何方式影響應用程序,我只需要確保僅返回一個ID爲1的記錄,並且僅返回一個具有2的ID的記錄,依此類推等。
希望有足夠的信息。在此先感謝球員:)
__We只使用值ID&CHILD_ID - 以前沒有IRRELEVANT_COLUMN,所以**每個ID都是唯一的** __:在你的例子有非唯一的ID,也不對ID + CHILD_ID;有什麼不對? –