ich HQL Abfrage zu schreiben versuche die aktuelle Sitzung eines Benutzers mit diesem AnsatzAbrufen der aktuellen Benutzer-ID in einer Sitzung eines Benutzers mithilfe von _sessionFactory.getCurrentSession(); Hibernate
@Autowired
private SessionFactory _sessionFactory;
private Session getSession() {
return _sessionFactory.getCurrentSession();
}
Ich versuche, so etwas wie dieses
return getSession().createQuery("SELECT FROM Users u WHERE u.id = :userIdFromSession AND u.isAdmin = true").list();
das ist mein Ansatz abrufen
zu erreichenreturn getSession().createQuery("SELECT FROM Users u WHERE u.id = " +:getSession() +"AND u.isAdmin = true").list();
unter der Annahme, dass die Getter und Setter vorhanden sind, ist dies die Benutzerentitätsklasse
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "userId")
private Long id;
@Column(nullable = false)
private String name;
@Column(unique = true, nullable = false)
private String email;
@Column(nullable = false)
private long timestamp;
@OneToOne
@JoinColumn(name = "adminId",nullable = false)
Admin admin;
@Column(nullable = true)
private boolean isAdmin;
unter der Annahme, Getter und Setter, ist dies die Chat Entitätsklasse
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "chatId")
private Long id;
private String message;
@OneToOne
@JoinColumn(name = "userId")
User user;
jetzt können Sie diesen Chat-Referenzen Benutzer sehen. Sie muss ein Benutzer sein, bevor Sie chatten können, so möchte ich in den Chat eines Benutzers auf diese Weise in dao Klasse abzurufen
// return getSession().createQuery("SELECT FROM Chats u WHERE u.id = :userIdFromSession AND u.isAdmin = true").list();
dies ist die Methode, die ich einen Benutzer in meinem Controller-Klasse erstellen bin mit
@RequestMapping(value = "/create-user", method = RequestMethod.POST)
public ModelAndView createUser(HttpServletRequest request,
HttpServletResponse response,
@RequestParam String name,
@RequestParam String email) {
try {
// create new user object
User user = new User();
user.setName(name);
user.setEmail(email);
user.setTimestamp(new Date().getTime());
// save user in db (if new)
if (_userDao.getByEmail(email) == null) {
_userDao.save(user);
}
// save in cookie
Cookie cookie = new Cookie("name", name);
Cookie cookie1 = new Cookie("email", email);
response.addCookie(cookie);
response.addCookie(cookie1);
} catch (Exception e) {
e.printStackTrace();
//logger.error("Exception in creating user: ", e.getStackTrace());
}
return new ModelAndView("redirect:/");
}
Dieser Ansatz funktioniert nicht nur, da es Kompilierungsfehler verursacht. Bitte helfen!
So vage Sie 'ersetzt' ": userIdFromSession" '' mit '': getSession() '' (die auch gültig Java ist nicht) und hör auf zu versuchen? – f1sh