2013-03-15 6 views
0

У меня есть управляемый домен Hibernate, который я сейчас пытаюсь обновить до среды Spring Data JPA.Сопоставление однонаправленного устаревания Hibernate с JPA

Конструкция Maven является успешной при запуске против старого Hibernate DAO.

Но когда я запускаю сборку Maven против менеджера сущностей JPA, я получаю исключение в одном классе домена, который использует сопоставление «один ко многим».

Вот класс домена:

public class LinkCategory implements java.io.Serializable { 

    private Integer id; 
    private int version; 
    private String name; 
    private String description; 
    private Set<Link> links = new HashSet<Link>(); 

    public LinkCategory() { 
    } 

    public Integer getId() { 
     return this.id; 
    } 

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

    public int getVersion() { 
     return this.version; 
    } 

    public void setVersion(int version) { 
     this.version = version; 
    } 

    public String getName() { 
     return this.name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDescription() { 
     return this.description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public Set<Link> getLinks() { 
     return this.links; 
    } 

    @SuppressWarnings("unused") 
    private void setLinks(Set<Link> links) { 
     this.links = links; 
    } 

    public void addLink(Link link) { 
     if (link.getLinkCategory() != this) { 
      if (link.getLinkCategory() != null) { 
       link.getLinkCategory().links.remove(link); 
      } 
      link.setLinkCategory(this); 
      this.links.add(link); 
     } 
    } 

    public void removeLink(Link link) { 
     if (link.getLinkCategory().getId() == this.getId() && this.getId() != null) { 
      link.setLinkCategory(null); 
      this.links.remove(link); 
     } 
    } 

} 

А вот отображение Hibernate:

<hibernate-mapping> 
    <class name="com.thalasoft.learnintouch.core.domain.LinkCategory" table="link_category" dynamic-insert="true" dynamic-update="true"> 
     <id name="id" type="java.lang.Integer"> 
      <column name="id" /> 
      <generator class="native"><param name="sequence">sq_id_link_category</param></generator> 
     </id> 
     <version name="version" type="int"> 
      <column name="version" not-null="true" /> 
     </version> 
     <property name="name" type="string"> 
      <column name="name" length="50" not-null="true" /> 
     </property> 
     <property name="description" type="string"> 
      <column name="description" not-null="false" /> 
     </property> 
     <set name="links" inverse="true" order-by="list_order" cascade="all"> 
      <key column="category_id" /> 
      <one-to-many class="com.thalasoft.learnintouch.core.domain.Link" /> 
     </set> 
    </class> 
</hibernate-mapping> 

Ошибки я получаю:

Вызванный: org.hibernate. MappingException: Не удалось определить тип для: java.util.Set, за столом: LinkCategory, для столбцов: [org.hibernate.mapping.Column (ссылки)]

Моя версия Hibernate является: 3.6.9.Final Моя версия Hibernate JPA 2 является: 1.0.1.Final Моя версия Spring Data JPA: 1.3.0.RELEASE

Любая подсказка?

С наилучшими пожеланиями,

+0

может у показать другое отображение класса – PSR

ответ

0

я мог бы решить эту проблему, указав следующую аннотацию:

@OneToMany(mappedBy="linkCategory") 
private Collection<Link> links; 
Смежные вопросы