hibernate com.XXX中的字段需要类型为的Bean,但找不到该Bean

vx6bjr1n  于 2022-12-29  发布在  其他
关注(0)|答案(2)|浏览(144)

我在Hibernate项目的Spring工作,我只是在开始。我尝试有一个SpringBootApplication写入MsSql一些LogEntries对象。我有一些不同的包:

以下是课程:

    • 日志条目外观实现类:**
package com.tradingSystem.dataAccess;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.tradingSystem.entity.LogEntry;

@Service
public class LogEntryFacadeImpl implements LogEntryFacade{
    @Autowired
    private LogEntryDAO logEntryDao;

    @Transactional
    @Override
    public Long addLogEntry(LogEntry log) {
        return this.logEntryDao.save(log).getId();
    }

    @Override
    public LogEntry getLogEntry(Long logId) {
        return this.logEntryDao.findOne(logId);
    }
}
    • 日志条目DAO.类:**
package com.tradingSystem.dataAccess;

import org.springframework.data.jpa.repository.JpaRepository;
import com.tradingSystem.entity.LogEntry;

public interface LogEntryDAO extends JpaRepository<LogEntry, Long> {

}

我用这个类作为测试器:

    • 测试应用程序类:**
package com.testings;

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

import com.tradingSystem.dataAccess.LogEntryFacade;
import com.tradingSystem.entity.LogEntry;

@SpringBootApplication
@ComponentScan({"com.tradingSystem" })
public class TestApplication implements CommandLineRunner{
    @Autowired
    private LogEntryFacade logEntryFacade;


    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
    
        LogEntry log = new LogEntry(552266, "Testing of log entry save", 
            new Date(System.currentTimeMillis()), 
            new Date(System.currentTimeMillis()));
    
        System.err.println(log);
    
        Long id = logEntryFacade.addLogEntry(log);
    
        LogEntry log2 = logEntryFacade.getLogEntry(id);
    
        System.err.println(log2);
    }


}

wher我运行这个作为应用程序我得到这个消息在控制台:
应用程序无法启动
描述:* * com. tradingSystem. dataAccess. LogEntryFacadeImpl中的字段logEntryDao需要一个类型为"com. tradingSystem. dataAccess. LogEntryDAO"的bean,但找不到该bean。**
行动:
考虑在您的配置中定义一个类型为'com.tradingSystem.dataAccess.LogEntryDAO'的bean。
我把@ComponentScan({"com.tradingSystem" })注解放在测试器中,正如你所看到的。但是,仍然会收到这个消息。(当我没有使用任何包分离时,一切都很好...)
请你帮我解决这个问题
"谢谢"

0s7z1bwu

0s7z1bwu1#

应该在Repository接口上方添加@Repository注解。也可以像@Repository(value=“logEntryRepository”)那样添加它

dfuffjeb

dfuffjeb2#

默认扫描路径是@SpringBootApplication类包,因此您必须声明三个扫描路径,但似乎缺少两个扫描配置,您需要添加

@EnableJpaRepositories(basePackages = "com.tradingSystem.dataAccess")
@EntityScan(basePackages = "com.tradingSystem.entity")
@ComponentScan(basePackages = "com.tradingSystem.dataAccess")

添加到TestApplication

相关问题