这是我的功能:
private boolean CheckPassword(String type, String login, String passwordHash) {
EntityManagerFactory entityManagerFactory
= Persistence.createEntityManagerFactory("kwestionariuszFor" + type);
EntityManager entityManager
= entityManagerFactory.createEntityManager();
type = type.substring(0, 1).toUpperCase() + type.substring(1, type.length());
List<Object> entities
= entityManager.createNamedQuery(type + ".findByLogin").setParameter("login", login).getResultList();
if (passwordHash.equals(entities.get(0).Password)) {
return true;
}
else {
return false;
}
}
Java 不“知道”任何表中存在密码列。我想这样的表达方式可能是这样的:
List<type.toClass()>
或者什么...有什么办法可以实现我想要的吗?我不想创建 if、after if、after if...-_-'
最佳答案
您必须为代表数据库表的所有类创建一个通用类型。
像这样:
public abstract class PasswordObject {
private String password;
public PasswordObject(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
}
不知道方法是否createNamedQuery
将能够返回 List<PassowrdObject>
,但如果没有,您可以像这样转换它(只要这样做是安全的,这只能通过使用它的方式来判断):
PasswordObject po = (PasswordObject) entities.get(0);
String password = po.getPassword();
关于java - 将对象类型声明为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10833915/