Even als eerste vooraf: ja, ik weet dat Hibernate bestaat 
Oke, wat ik dus gemaakt heb is een object abstractie van database tabellen. Je kunt dus direct objecten uit een database halen via een query of gewoon via ID. Tabelen en objecten worden aan de hand van annotations aan elkaar gekoppeld, en dat werkt ook heel erg netjes en snel tot nu toe.
Als er meer dan een Object uit komt wil ik een Iterator gebruiken. Echter moet deze iterator van een bepaalt type zijn, dus als we uit de database Kaas objecten halen, dan moet die Iterator<Kaas> zijn. En juist dat krijg ik niet voor elkaar zodat dat de compiler begint te zeuren over type safety.
That's where you come in, maw: hoe krijg ik dat voor elkaar?
Als eerste wat code, de Iterator:
En nu de code die de Iterator moet terug geven:
Precies op die return geeft de compiler (of eigenlijk eclipse) dus die warning:
Dus als jullie tips hebben: graag!
Ben dit weekeind niet echt beschikbaar achter de PC, dus reacties van mijn kant komen pas maandag weer
Oke, wat ik dus gemaakt heb is een object abstractie van database tabellen. Je kunt dus direct objecten uit een database halen via een query of gewoon via ID. Tabelen en objecten worden aan de hand van annotations aan elkaar gekoppeld, en dat werkt ook heel erg netjes en snel tot nu toe.
Als er meer dan een Object uit komt wil ik een Iterator gebruiken. Echter moet deze iterator van een bepaalt type zijn, dus als we uit de database Kaas objecten halen, dan moet die Iterator<Kaas> zijn. En juist dat krijg ik niet voor elkaar zodat dat de compiler begint te zeuren over type safety.
That's where you come in, maw: hoe krijg ik dat voor elkaar?
Als eerste wat code, de Iterator:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| class QueryItterator<T> implements Iterator{ public ResultSet rs; public Class<T> obj; public QueryItterator(Class<T> obj,ResultSet rs){ this.obj = obj; this.rs = rs; } public boolean hasNext() { try { return rs.next(); } catch (SQLException e) { log.error("Exception:", e); return false; } } public T next() { try { return createObject(obj,rs); } catch (DAOException e) { log.error("Exception:", e); return null; } } public void remove() { try { rs.deleteRow(); } catch (SQLException e) { log.error("Exception:", e); } } } |
En nu de code die de Iterator moet terug geven:
Java:
1
2
3
4
5
6
7
| public <T extends Object> Iterator getByQuery(Class<T> obj, String tables,String whereClause,Object... values) throws DAOException { .... knip ... ResultSet result = resultQuery( SQL query); return new QueryIterator(obj,result); } |
Precies op die return geeft de compiler (of eigenlijk eclipse) dus die warning:
Ik heb al vanalles geprobeerd, maar het wil niet echt helpen. Het is natuurlijk wel slechts een warning, maar als je dit goed voor elkaar krijgt, scheelt, dat flink wat casting in de rest van de codeType safety: The constructor GenericDAO.QueryIterator(Class, ResultSet) belongs to the
raw type GenericDAO.QueryIterator. References to generic type
GenericDAO.QueryIterator<T> should be parameterized
Dus als jullie tips hebben: graag!
Ben dit weekeind niet echt beschikbaar achter de PC, dus reacties van mijn kant komen pas maandag weer
Do diamonds shine on the dark side of the moon :?