我正在尝试使用Spring Data + Hibernate启动Java SE应用程序,并且到目前为止已经完成了以下工作:
配置文件
@Configuration
@PropertySource("classpath:hibernate.properties")
@EnableJpaRepositories
@EnableTransactionManagement
public class JpaConfiguration {
private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";
private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";
private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN =
"entitymanager.packages.to.scan";
@Resource
private Environment env;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(
env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new
LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPersistenceProviderClass(org.hibernate
.jpa.HibernatePersistenceProvider.class);
entityManagerFactoryBean.setPackagesToScan(env.
getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));
entityManagerFactoryBean.setJpaProperties(hibProperties());
return entityManagerFactoryBean;
}
private Properties hibProperties() {
Properties properties = new Properties();
properties.put(PROPERTY_NAME_HIBERNATE_DIALECT,
env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));
properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL,
env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));
return properties;
}
@Bean
public JpaTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
return transactionManager;
}
@Bean
public MainBean mainBean() {
return new MainBean();
}
}
Start class
public class Start {
private static final String CONFIG_PACKAGE = "org.app.config";
public static void main(String[] args) {
try (AnnotationConfigApplicationContext ctx = new
AnnotationConfigApplicationContext()) {
ctx.scan(CONFIG_PACKAGE);
ctx.refresh();
MainBean bean = ctx.getBean(MainBean.class);
bean.start();
}
}
}
Main Bean
public class MainBean {
public void start() {
System.out.println("Application Started. . .");
}
}
但是我收到以下异常
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\MyPath\target\classes\org\app\config\JpaConfiguration.class]; nested exception is java.lang.IllegalArgumentException
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:281)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.scan(ClassPathBeanDefinitionScanner.java:220)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.scan(AnnotationConfigApplicationContext.java:153)
at org.app.Start.main(Start.java:25)
Caused by: java.lang.IllegalArgumentException
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.asm.ClassReader.<init>(Unknown Source)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:257)
... 4 more
有人知道我在做什么错吗?
你看到的异常不是由无效的Spring配置引起的,而是由你的类路径设置引起的。感觉就像关于ASM库和Java 8的版本不兼容。已知Spring 3.2依赖的ASM版本与Java 8不兼容。
因此,如果要使用Java 8运行代码,则需要使用最新的Spring 4.0版本。
我与MongoDB和Spring数据的聚合框架进行了相当长的一段时间的斗争,我实际上想知道我想做的事情是否真的可能。 null 我试图从这种方法开始,但我找不到如何在一个聚合pipeline中完成所有事情的方法:
问题背景 之前做springboot项目在操作数据库方面一直在使用的是Mybatis,最近在查阅资料的时候接触到了SpringData JPA与SpringData JDBC,想问一下大佬们,这三个框架如何选型
我是Neo4j和SDN的新手。我试图使用@index(unique=true)为我的实体创建主键。它创建唯一的节点,但如果使用索引的相同属性值,它将替换其他属性。如: 但是,我想抛出一个关于主键冲突/重复节点的异常。 有什么方法可以达到同样的效果吗?
目前,我有个问题。我可以在mongodb中使用聚合函数查询相应的数据,但是在使用springdatamongodb后,我发现lookup不能使用变量将string转换为objectid,那么该如何编写这个聚合函数呢 如何在spring data mogodb中将其写成mongodb表达式
我对SpringData和JPA有问题。当我向HomeRepository接口添加方法时,我得到一个错误。我使用的是JPararePository接口,在pom.xml文件中有一个MySQL数据库集。这些只是我对spring的开始,所以我需要一些了解spring的人的帮助。下面是我的代码和日志: 主页库: 用户存储库: 日志:
我需要使用JParePository执行以下操作: 我目前这样做:
我有,和Eclipse Maven项目。 包含: 接口。 IMyConfig的实现。 实现,具有属性。 "空"文件。 一个的实现,标记为。 一个类(和方法),初始化Weld SE并检索一个bean。 一个,其中在部分中列出。 现在,我运行类,并且成功地检索了bean(作为实例)。但是这样的实例在其属性中被注入了实例,而不是替代版本() 我正在使用Eclipse Luna M2Eclipse。 我做
我在使用SpringData/Hibernate按自定义规则对枚举进行排序时遇到了一些小问题。 A有一个名为DeviceState的枚举,它有自己的优先级字段。 枚举由DeviceEntity使用: 有线索吗,救命?点子?请记住,这是生产工作系统,我不能做任何“烟火”。