2016-06-16 1 views
0

У меня есть настройка рабочего спящего режима с использованием аннотацийКак не нужно указывать сопоставления библиотеки Hibernate

@Entity 
@Table(name="Users") 
public class User implements Serializable{ 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name="USER_ID") 
    private int id = 0; 

    @Column(name="EMAIL") 
    private String email = ""; 

    @Temporal(TemporalType.TIMESTAMP) 
    @Column(name="CREATED") 
    private Date created = null; 

    public User(){ 
     Calendar cal = Calendar.getInstance(); 
     this.created = cal.getTime(); 
    } 

    public User(int id, String email, Date created) { 
     this.id = id; 
     this.email = email; 
     this.created = created; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public int getId() { 
     return id; 
    } 

    public Date getCreated() { 
     return created; 
    } 

    public void setCreated(Date created) { 
     this.created = created; 
    } 

    @Override 
    public String toString() { 
     return "centaurus.hib.User{" + 
       "id=" + id + 
       ", email='" + email + '\'' + 
       ", created=" + created + 
       '}'; 
    } 
} 

, чтобы сделать эту работу я должен иметь запись (среди других) в моем файле hibernate.cfg.xml

<mapping class="centaurus.hib.User"/> 

В противном случае hibernate выдает ошибку, заявив, что у нее нет файла сопоставления.

альтернативно, когда я создаю свою постоянную сессионную обработку. Я могу указать, какие классы должны быть сопоставлены.

Проблема в том, что в других проектах, над которыми я работал, мне нужно было только добавить класс и правильно его аннотировать, чтобы спящий режим использовал его. это то, что я хотел бы сделать, но не знаю, как это сделать. Я не хочу иметь список классов в моей конфигурации hibernate в дополнение к аннотированным классам.

+0

вы можете использовать аннотацию, управляемую вашими спящими свойствами, и иметь компонентное сканирование для ваших пакетов классов, тогда все, что вам нужно сделать, это просто использовать сопоставление от одного до одного, от одного до многих и т. Д., Чтобы управлять вашими классами. – logger

+0

Вы пробовали использовать чистую JPA? не спящий конкретный материал, только используя persistence.xml? – Apostolos

ответ

0

Если вы используете Spring для вашей фабрики сеансов, вы можете указать свойство 'packageToScan'.

<property name="packagesToScan" value="com.xyz.model" /> 
+0

Не использовать пружину, используя restx, это пакеты для сканирования, характерные для весны? это выглядит так: – Arthur

0

Вы также можете использовать класс Hibernate Configuration если вы разводку спящий режим вручную и вызвать Configuration#addAnnotatedClass(Class<?>).

+0

В настоящее время я использую класс конфигурации для вставки моих учетных данных, поскольку я не хотел их в XML-файле, я все еще использую огонь xml для других параметров. но идея заключалась в том, чтобы удалить повторение для каждого класса, а не просто переместить его из xml-файла в класс создания sessionfactory, по сути, он ищет способ спящего режима или java (NOT SPRING) сказать «включить все аннотированные классы в xy. z package " – Arthur

+0

afaik, вам придется написать это самостоятельно. – Naros

Смежные вопросы