我正在使用Spring安全性進行登錄。我有User.java
其中包含用戶的詳細信息。如何將用戶標識從一張表傳遞到另一張表使用休眠狀態的春天mvc
@Entity(name = "user_table")
//@Table(name = "user_table")
public class User {
@Id
@Column(name = "id")
private String userId;
@Column(name = "email" ,unique = true)
private String userEmail;
@Column(name = "password")
private String userPassword;
//getter and setters
}
我通過使用spring安全性從表中獲取當前用戶的全部數據。這是代碼:
public User findUserByEmail(String email) {
List<User> users = new ArrayList<User>();
try{
users = sessionFactory.getCurrentSession().createQuery("from user_table where email= ?").setParameter(0, email).list();
System.out.println("user is " +users);
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
if (users.size() > 0) {
return users.get(0);
} else {
return null;
}
}
@Override
public User getCurrentUser() {
Authentication auth = SecurityContextHolder.getContext()
.getAuthentication();
User currentUser = new User();
if (!(auth instanceof AnonymousAuthenticationToken)) {
UserDetails userDetails = (UserDetails) auth.getPrincipal();
System.out.println("User has authorities: "
+ userDetails.getAuthorities());
System.out.println("USERNAME:: "+userDetails.getUsername());
currentUser = findUserByEmail(userDetails
.getUsername());
System.out.println("currentUser "+currentUser);
System.out.println("currentUser "+currentUser.getUserId());
return currentUser;
}
return null;
}
我想是要發送的我是從currentUser.getUserId()
得到一些其他方法的用戶ID。在該方法中,我將映射到其他表,如user_detail
表,其中id是主鍵。通過發送id,我將得到user_table中不存在的其他user_details。
這是我UserDetail
:
@Entity(name = "user_detail")
@Table(name = "user_detail")
public class UserDetail {
@Id
@GeneratedValue
@Column(name = "id")
private String userId;
//some other details like Address .
//getter and setter.
}
從控制器我打電話這樣的上述方法:
UserService userService = new UserService();
User user=userDao.getCurrentUser();
String userId = user.getUserId();
System.out.println(userId);
UserDetail u=userDao.findUserById(userId);
而這正是我傳遞當前用戶ID的方法:
public UserDetail findUserById(String id) {
// TODO Auto-generated method stub
List<String> users = new ArrayList<String>();
try{
users = sessionFactory.getCurrentSession().createQuery("from user_detail where id= ?").setParameter(0, id).list();
System.out.println("user is " +users);
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
if (users.size() > 0) {
return null;
} else {
return null;
}
}
現在我得到的結果是null。像用戶一樣是null。我在這裏做錯了什麼?
'如果(users.size()> 0){返回NULL;}其他{返回NULL;}' - 你'總是從'findUserById'方法返回'null'。 – Daniel 2014-10-03 06:27:24
@ Daniel..ok那是一個error.another錯誤,因爲它不打印user_detail表中的任何內容。 – user3189357 2014-10-03 06:34:04
看到我得到的輸出爲 - 用戶ID []這樣。意味着它沒有得到正確的ID在方法。這就是爲什麼它的打印空白。 – user3189357 2014-10-03 06:42:19