通过String声明对象类型

时间:2012-05-31 12:46:18

标签: java mysql string jdbc

这是我的功能:

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之后创建if ... -_-'

1 个答案:

答案 0 :(得分:2)

您必须为表示数据库表的所有类创建公共类型。

像这样:

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();