2013-02-11 28 views
7

Tôi đang cố định cấu hình JPA chỉ bằng Java.Phiên bản cấu hình Java của jpa: thẻ kho lưu trữ là gì?

Tôi có ý tưởng rằng @EnableJpaRepositories sẽ tương đương với jpa: thẻ kho lưu trữ trong xml, nhưng tôi đoán đây không phải là trường hợp?

Tôi có điều này trong xml của tôi:

<jpa:repositories base-package="com.myapp.bla.bla" /> 

Nhưng nếu tôi loại bỏ nó và thay vào đó sử dụng

@EnableJpaRepositories("com.myapp.bla.bla") 

Trong cấu hình java của tôi, tôi nhận được một ngoại lệ - Tôi nghĩ đó là có thể cấu hình JPA với Java từ 1.2.0?

EDIT:

Ngoại lệ gốc là:

No bean named 'entityManagerFactory' is defined 

Tôi giả sử các ngoại lệ đã làm với định nghĩa này trong cấu hình của tôi, nhưng như đã nói, mọi thứ hoạt động nếu tôi giữ xml và import nó để cấu hình java của tôi.

@Bean 
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws ClassNotFoundException { 
    LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean(); 

    factoryBean.setDataSource(dataSource()); 
    factoryBean.setPackagesToScan(new String[] { "com.myapp.bla.bla.model" }); 
    factoryBean.setPersistenceProviderClass(HibernatePersistence.class); 
    Properties props = new Properties(); 
    props.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect"); 
    factoryBean.setJpaProperties(props); 

    return factoryBean; 
} 
+1

Vui lòng đăng ngoại lệ quá trong câu hỏi của bạn. –

Trả lời

6

Vấn đề là cấu hình hiện tại của bạn tạo ra một bean gọi entityManagerFactoryBean. Tuy nhiên, thông báo lỗi của ngoại lệ gốc của bạn cho biết rằng một bean có tên là entityManagerFactory không được tìm thấy.

Bạn có hai lựa chọn để sửa chữa vấn đề này (chọn một trong những bạn thích nhất):

  1. Thay đổi tên của phương pháp này mà cấu hình LocalContainerEntityManagerFactoryBean từ entityManagerFactoryBean()-entityManagerFactory (). Điều này tạo ra một bean có tên là entityManagerFactory.
  2. Đặt thuộc tính tên của chú thích @Bean thành "entityManagerFactory". Nói cách khác, chú thích phương thức cấu hình với @Bean (name = "entityManagerFactory") chú thích. Bằng cách này, bạn có thể tự xác định tên của bean và đảm bảo rằng tên của phương thức được chú thích bị bỏ qua.
+0

tùy chọn 3. đặt thuộc tính entityManagerFactoryRef trên chú thích. Điều này có thể mới kể từ khi câu hỏi được trả lời. –

Các vấn đề liên quan