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