【发布时间】:2014-09-23 08:45:52
【问题描述】:
我在以下行中收到“java.lang.NullPointerException”错误:
miIdioma=miDao.find(Idioma.class, "playa");
miIdioma 是属于“Idioma”类的对象,由属性“palabra”和“idioma”组成
Dao 文件名为 IIdiomaDao.java,我想使用它的方法:
public <T> T find(Class<T> clazz, Serializable id) {
return entityManager.find(clazz, id);
}
为了访问这个方法,我在原始文件中声明了变量 miDao
private IIdiomaDao miDao;
最后,我用这个方法来获取访问权限
miIdioma=miDao.find(Idioma.class, "playa");
我知道当变量未初始化时会显示此错误,但我将数据库连接到我的项目并且应该上传数据库数据。为了执行单一测试,我按照以下步骤操作:
-
我连接了数据库
public class IdiomaDaoTest { private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; private static final String JDBC_URL = "jdbc:mysql://localhost:3306/diccionario"; private static final String USER = "root"; private static final String PASSWORD = "mypassword";}
我导入了红色数据
块引用
public void importDataSet() throws Exception {
IDataSet dataSet = readDataSet();
cleanlyInsert(dataSet);
}
private IDataSet readDataSet() throws Exception {
return new FlatXmlDataSetBuilder().build(new File("/home/inta/workspace/JPAconPruebasUnitarias/src/test/sources/FlatXmlDataSet.xml"));
}
private void cleanlyInsert(IDataSet dataSet){
IDatabaseTester databaseTester;
try {
databaseTester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD);
databaseTester.setSetUpOperation(DatabaseOperation.CLEAN_INSERT);
databaseTester.setDataSet(dataSet);
databaseTester.onSetup();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
注1:这里我假设数据库已经上传,所以初始化了。
我的问题是:为什么 miDao 指向 Null?我做错了什么?
注意2:我的数据集是:
<!DOCTYPE dataset SYSTEM "my-dataset.dtd" >
<dataset>
<idioma palabra="playa" idioma="español"/>
<idioma palabra="beach" idioma="ingles"/>
<idioma palabra="platja" idioma="catalan"/>
</dataset>
非常感谢,这个社区很棒!
【问题讨论】:
-
特别是,我写了这个答案 - stackoverflow.com/a/24347569/139985 - 解释如何追查 NPE 的原因。
-
为什么这个问题的投票率如此之低?是的,它是重复的。是的,这完全是初学者的话题。但是,不,这个问题质量不错。
-
@Absurd-Mind - 你有一个有效的观点。不幸的是,这正是这里人们的行为方式。
-
@StephenC 虽然我同意这个问题不值得那么多反对票,但反对票按钮上的工具提示说“这个问题没有显示任何研究工作;它不清楚或没有用” -与问题本身的质量差无关,虽然问题写得很好,但它确实缺乏研究工作(OP 可以通过简单地在 Google 上搜索找到“什么是 NullPointerException,以及如何解决它?”。
标签: mysql nullpointerexception persistence dao dbunit