Hallo!
Ich habe eine Tabelle BW_USER mit RecId, Vorname etc. diese wird auch sehr schön auf meine Java-Klasse User gemappt.
Nun möchte ich jedoch zusätzlich (lesend) auf eine Information aus der Tabelle BW_LogTable zugreifen, in der protokolliert wird, wann sich ein User angemeldet hat.
Zur Zeit arbeite ich mit dieser 'Lösung' (Codeausschnitt):
Code:
@Entity
@javax.persistence.Table(name = "BW_USER")
public class User implements java.io.Serializable {
private Integer m_nRecId;
private String m_sLastName;
public String getLastName() {
return m_sLastName;
}
public void setLastName(String _sLastName) {
m_sLastName = _sLastName;
}
@Transient
public Timestamp getLastLogin() {
EntityManager em = BicoreConst.createBicoreadminEntityManager();
try {
// Diese Query-Variante nur zur Demonstration, wie die Tabellen zusammenhängen:
//Query q = em.createNativeQuery("SELECT MAX(BW_LogTable.LogDate) as LastLogin " + //
// " FROM BW_LogTable RIGHT OUTER JOIN " + //
// " BW_USER ON BW_LogTable.LogUser = BW_USER.RECID " + //
// " WHERE (BW_LogTable.LogTask = 'LOGIN') AND (BW_USER.RECID = ?)" + //
// " GROUP BY BW_USER.RECID");
Query q = em.createNativeQuery("SELECT MAX(BW_LogTable.LogDate) as LastLogin "
" FROM BW_LogTable "
" WHERE (LogTask = 'LOGIN') AND (LogUser = ?)");
q.setParameter(1, this.getRecid());
try {
Timestamp date = (Timestamp)q.getSingleResult();
return date;
} catch (javax.persistence.NoResultException e) {
return null;
}
} finally {
em.close();
}
}
}
Ich suche jedoch eine Lösung, bei der der letzte Loginzeitpunkt - so wie bei LastName - in einer Member-Variable der Klasse User gespeichert wird.
Für jeden Tipp dankbar
Holger Schulz