2013-04-18 4 views
0

У меня есть две таблицы;Отображение гибернации в Java

Street имеет

"Street_id", "StreetName", "description" 

и Путь имеет

"path_id", "pathDescription", "path_name" 

и есть одна таблица более,

Street-путь имеет

"path_id", "Street_id" 

Теперь я хочу, чтобы создать связь между этими таблицами, например, что когда-либо запись будет удалена из Street, запись от стрит-пути также будет удален, но они не могут иметь прямое отношение корабля. Только Улица и Путь может иметь прямое отношение, а запись в Путь должен оставаться нетронутым.

Как это сделать в спящем режиме?

PS: Я использую xml, а не аннотации для отображения гибернации.

+0

У вас есть какие-либо идеи, как это можно сделать? – Vitaly

+0

Я пробовал и создал прямое отношение корабля, но не мог понять, как сделать то, что упоминается, поэтому я спросил здесь. –

+0

Я думаю, вам стоит попробовать это http://www.dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-many-to-many-1.html и вернуться с кодом (сопоставления, доступ , и т. д.), если он не работает. – Vitaly

ответ

0

Вы можете использовать критерии api. На самом деле вам не нужны какие-либо отношения, вам просто нужно street_id, и у вас это уже есть. Вы можете попробовать это;

public void removeStreet(Street street) //this reference is an instance 
{          //of Street entity that you want to remove 
    session.clear(); 
    session.delete(street); 
    session.flush(); 

    StreetPath streetPath = new StreetPath(); //create new instance of StreetPath entity 
    streetPath.setStreetId(street.getId()); //with id of deleted row of Street table 

    session.clear(); 
    session.delete(streetPath); 
    session.flush(); 
} 

Я надеюсь, что это поможет.

+0

как, если бы вы могли привести пример? –

+0

@Sobia Я попытался привести пример. Сначала вы должны создать сеанс, я думаю, у вас его уже есть. BTW вам не нужно использовать объект Path для этого процесса. – 2013-04-18 13:56:49

+0

этот метод, о котором я уже говорил, но я хочу точно сказать, что я опубликовал в своем запросе «когда запись удаляется с улицы, запись из Street-path также будет удалена« автоматически »и записана на пути должен оставаться неповрежденным "... и для этого мне не нужно будет запрашивать StreetPath отдельно. –

0

вы можете использовать этот учебник: Hibernate mapping

+0

На самом деле это не ответ. – Vitaly

+0

Если когда-либо запись удалена с улицы, запись из Street-path также будет удалена, вы должны использовать атрибут 'cascade' в XML – navand

+0

, вы действительно так думаете? – Vitaly

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