小编xyz*_*442的帖子

Spring + Hibernate:LocalSessionFactoryBean - NoSuchMethodError:org.hibernate.cfg.annotations.reflection.XMLContext

我正在尝试Hibernate 4.0.0.FINALSpring 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)

java configuration spring persistence hibernate

6
推荐指数
1
解决办法
1万
查看次数

将基于Spring的Spring转换为基于Java的配置

我尽量不使用任何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)

java xml configuration spring spring-annotations

5
推荐指数
1
解决办法
1万
查看次数