我正在尝试Hibernate 4.0.0.FINAL与Spring 3.1.0.RELEASE
使用集成@Configuration.
之后,出现此问题:
BeanCreationException: Error creating bean with name 'alertsSessionFactoryBean'
NoSuchMethodError: org.hibernate.cfg.annotations.reflection.XMLContext$Default.getDelimitedIdentifier()Ljava/lang/Boolean;
Run Code Online (Sandbox Code Playgroud)
这是我的PersistenceHibernateConfig档案
@Configuration
@EnableTransactionManagement
public class PersistenceHibernateConfig {
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${hibernate.dialect}")
String hibernateDialect;
@Value("${hibernate.show_sql}")
boolean hibernateShowSql;
@Value("${hibernate.hbm2ddl.auto}")
String hibernateHbm2ddlAuto;
@Bean
public LocalSessionFactoryBean alertsSessionFactoryBean() {
final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(this.restDataSource());
sessionFactory.setPackagesToScan(new String[]{"com.cloudlb"});
sessionFactory.setHibernateProperties(this.hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource restDataSource() {
final DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(this.driverClassName);
dataSource.setUrl(this.url);
dataSource.setUsername("test");
dataSource.setPassword("1234");
return dataSource; …Run Code Online (Sandbox Code Playgroud) 我尽量不使用任何xml.
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="jaxbMarshaller"/>
<property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>
<bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
像这样:转换为@Bean
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>();
converters.add(marshallingMessageConverter());
restTemplate.setMessageConverters(converters);
return restTemplate;
}
Run Code Online (Sandbox Code Playgroud)
问题在这里.
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.cloudlb.domain.User</value>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
尝试将"com.cloudlb.domain.User"转换为Class []而不是工作.
@Bean
public MarshallingHttpMessageConverter marshallingMessageConverter() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
//
List<Class<?>> listClass = new ArrayList<Class<?>>();
listClass.add(User.class);
marshaller.setClassesToBeBound((Class<?>[])listClass.toArray());
// --------------------------------
return new MarshallingHttpMessageConverter(marshaller, marshaller);
} …Run Code Online (Sandbox Code Playgroud)