我试图在一个项目中创建两个实体(不相关)。我正在使用javaspringboot连接mysql数据库。我能做的最好的方法是什么?因为我试着做了两个仓库,但我只成功了其中的一个。另一个给了我一个错误。在mysql工作台中运行查询时,即使它实际上很好,也会给我带来错误
在不起作用的存储库(accountrepository.java)中,我放了如下内容:
public interface AccountRepository extends CrudRepository<Accounts, Integer> {
@Query("SELECT applicationPassword FROM Accounts where applicationName = 'myApp'")
String findPasswordApp();
}
在实体文件(accounts.java)中,我放置了如下内容
@Entity
public class Accounts {
@Id
private Integer accountID;
private String applicationName;
private String applicationPassword;
public void setAccountID(Integer accountID) {
this.accountID = accountID;
}
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
public void setApplicationPassword(String applicationPassword) {
this.applicationPassword = applicationPassword;
}
public Integer getAccountID() {
return accountID;
}
public String getApplicationName() {
return applicationName;
}
public String getApplicationPassword() {
return applicationPassword;
}
}
但这给了我错误。我想从这个实体中得到的是,我可以检查数据库中的值(read),我已经将它手动放入mysql工作台。
下面是我在myslworkbench中首先执行的表查询
CREATE TABLE Accounts (
accountID int,
applicationName varchar(255),
applicationPassword varchar(255)
);
当我成功地将数据插入其中时:
INSERT INTO Accounts (accountID, applicationName, applicationPassword)
VALUES ('1', 'myApp', 'password'));
我的代码有什么问题吗?请帮忙
编辑:我试图用try catch来掩盖这一行'string password=accountrepository.findpasswordapp();'这给了我一个类似“java.lang.nullpointerexception”的异常
这里是我的完全例外:org.eclipse.paho.client.mqttv3.internal.commscallback.delivermessage(commscallback)。java:499)在org.eclipse.paho.client.mqttv3.internal.commscallback.handlemessage(commscallback。java:402)在org.eclipse.paho.client.mqttv3.internal.commscallback.run(commscallback。java:206)在java.util.concurrent.executors$runnableadapter.call(executors。java:511)在java.util.concurrent.futuretask.run(futuretask。java:266)在java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.access$201(scheduledthreadpoolexecutor。java:180)在java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.run(scheduledthreadpoolexecutor。java:293)位于java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor。java:1149)在java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor。java:624)在java.lang.thread.run(线程。java:748) '
1条答案
按热度按时间jdzmm42g1#
我很确定您的存储库缺少注解或不在正在扫描的包中。我有10个存储库的项目,所以这绝对不是问题,而且@query注解中的hql看起来还行。
没有理由这两个不能一起工作,所以我猜在运行时抛出错误的repo的@autowired字段是空的。你可能只是忘记了一个注解。accountrepository顶部没有@repository注解吗?主类或配置中的@componentscan没有包含它的包吗?
如果这两样东西都不见了那就是你的问题。你能用例外的全文编辑一下吗?