2014-01-05 3 views
1

У меня есть 2 Entities: Technologie и компетентностьMapping Hibernate

Каждая компетенция может иметь 1 или больше Techno

так что я должен генерировать классы Hibernate

и он дал мне 3 классов Model

Technologie 
Competence 
TechnologieId 

и теперь я запутался о том, как добавить Technologie

и в чем смысл TechnoligieId?

Technologie.java

public class Technologie implements java.io.Serializable { 

    private TechnologieId id; 
    private Competence competence; 
    private String libelleTechnologie; 
} 

TechnologieId.java

public class TechnologieId implements java.io.Serializable { 

    private int idCompetence; 
    private int idTechnologie; 
} 

Technologie.hbm.xml

<class name="com.model.Technologie" table="technologie" catalog="gestioncollaborateur"> 
     <composite-id name="id" class="com.model.TechnologieId"> 
      <key-property name="idCompetence" type="int"> 
       <column name="idCompetence" /> 
      </key-property> 
      <key-property name="idTechnologie" type="int"> 
       <column name="idTechnologie" /> 
      </key-property> 
     </composite-id> 
     <many-to-one name="competence" class="com.model.Competence" update="false" insert="false" fetch="select"> 
      <column name="idCompetence" not-null="true" /> 
     </many-to-one> 
     <property name="libelleTechnologie" type="string"> 
      <column name="libelleTechnologie" length="254" /> 
     </property> 
    </class> 
+0

У вас есть третий класс/таблица, потому что он использует отображение n: n. Теперь каждая компетенция может иметь много технологий, и каждая технология может иметь несколько компетенций (что имеет смысл для меня) – HectorLector

+0

Да, но как я могу добавить новую технологию, мне нужно создавать новые технологии каждый раз, когда мне нужно создавать новую технологию. – user3161609

+0

Есть ли у вас пытался добавить новую технологию? Что вы пробовали, что сработало, а что нет? –

ответ

0

Если отношения упоминается правильно в этом вопросе. Тогда почему ты не делаешь что-то подобное?

public class Technologie implements java.io.Serializable { 

private id; 
private Competence competence; 
private String libelleTechnologie; 


@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name="<yourForeign Key for Competence>") 
public Competence getCompetence() { 
    return competence; 
} 
} 

И класс компетенции, такой как.

public class Competence implements java.io.Serializable { 

private id; 
private List<Technologie> technologies; 


@OneToMany(fetch = FetchType.LAZY) 
@JoinColumn(mappedBy = "<name of the property of Competence in Technology class>") 
public List<Technologies> getTechnologies() { 
    return technologies; 
} 
} 

Также, если технология является управляющей стороной отношений. В основном, это означает, что вы сделаете сохранение/обновление в Technologie в первую очередь, которое будет обрабатывать отношения.

Если вам нужна сторона @OneToMany как управляющая сторона. вам нужно будет добавить атрибуты insertable = false, updatable = false в аннотации @JoinColumn для метода getTechnologies.