java—如何使两个不相关的实体(两个存储库)同时在一个项目中运行?有可能吗?

uplii1fm  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(306)

我试图在一个项目中创建两个实体(不相关)。我正在使用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) '

jdzmm42g

jdzmm42g1#

我很确定您的存储库缺少注解或不在正在扫描的包中。我有10个存储库的项目,所以这绝对不是问题,而且@query注解中的hql看起来还行。
没有理由这两个不能一起工作,所以我猜在运行时抛出错误的repo的@autowired字段是空的。你可能只是忘记了一个注解。accountrepository顶部没有@repository注解吗?主类或配置中的@componentscan没有包含它的包吗?
如果这两样东西都不见了那就是你的问题。你能用例外的全文编辑一下吗?

相关问题