2013-09-28 2 views
1

меня такая ситуация, когда я составляю картуИспользование oneToMany с jointable но, отображение его на subentity

@OneToMany 
@OrderBy(value="id desc") 
@JoinTable(name="EntityOne", 
joinColumns = @JoinColumn(name="EntityTwo_id", referencedColumnName="id"), inverseJoinColumns = @JoinColumn(name="EntityThree_id", referencedColumnName="id")) 
private List<EntityThree> samples = Lists.newArrayList(); 

Это прекрасно работает, но мне было интересно, если есть способ отобразить это в subentity из EntityThree. Например, чтобы получить

private List<SubEntity> samples = Lists.newArrayList(); 

где SubEntity получается из EntityThree.getSubEntity в основном, subEntity существует в EntityThree

Заранее спасибо за помощь, больше, чем хотелось уточнить себя, если я не ясно.

+0

Как отображается субэтничность? Это полный @Entity со своей собственной таблицей DB? @Component? Отображение определения класса и аннотации Hibernate для SubEntity, вероятно, прояснит вопрос. – Tim

ответ

1

Поля, отображаемые в сущности, должны соответствовать тому, что у вас действительно есть в таблицах базы данных. Кажется, у вас есть связь между вышеуказанным объектом и EntityThree, но не между этим объектом и SubEntity. Таким образом, эта несуществующая связь на уровне БД не должна существовать и на уровне сущности.

Но ваши лица могут иметь методы, которые могут перемещаться в графе сущностей:

public List<SubEntity> getSubEntities() { 
    List<SubEntity> result = Lists.newArrayListWithExpectedSize(samples.size()); 
    for (EntityThree sample : samples) { 
     result.add(sample.getSubEntity()); 
    } 
    return result; 
} 

или функциональным способом:

public Iterable<SubEntity> getSubEntities() { 
    return Iterables.transform(samples, new Function<EntityThree, SubEntity>() { 
     @Override 
     public SubEntity apply(EntityThree input) { 
      return input.getSubEntity(); 
     } 
    }); 
} 

Вы также можете использовать запрос:

select sub from MyEntity m 
inner join m.samples sample 
inner join sample.subEntity sub 
where m.id = :theId 
Смежные вопросы