2013-04-18 85 views
0

我有两个表;Java中的Hibernate映射

"Street_id", "StreetName", "description" 

路径

"path_id", "pathDescription", "path_name" 

,并有一张桌子,

街路径

"path_id", "Street_id" 

现在我要创建这些表之间的关系,使得当过记录从,从街路径记录也将被删除删除,但他们不能有直接关系的船。只有路径可以有直接的关系,并记录在路径应该保持不变。

怎么办呢休眠?

PS:我使用XML,而不是Hibernate映射注解。

+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我试着举个例子。你必须先创建一个会话,我想你已经有一个会话了。顺便说一句,你不需要为这个过程使用Path实体。 – 2013-04-18 13:56:49

+0

你提到的这个方法我已经知道了......但是我想要做的事情是在我的查询中发布的“当从街道删除记录时,Street-path的记录也会自动删除”,并记录在路径中应该保持完好“......并且为此我不需要查询StreetPath。 –

0

您可以使用此教程:Hibernate mapping

+0

这不是一个真正的答案。 – Vitaly

+0

对于从Street删除记录时,Street-path中的记录也将被删除,您应该使用XML中的cascade属性 – navand

+0

您真的这么认为吗? – Vitaly