【问题标题】:How to have in many-to-one relation dictionary table with distinct rows?如何在具有不同行的多对一关系字典表中拥有?
【发布时间】:2013-11-23 21:51:39
【问题描述】:

我有问题。我在 Hibernate 中有一个多对一的关系 - 一个城市可以有很多学生。

我有这样的想法:

Student s = new Student("Mike", "Tyson");
City c = new City("London");

s.setCity(c);

session.save(c);
session.save(s);

而且效果很好:)

但是.. 当我想这样做时:

    Student s = new Student("Mike", "Tyson");
    Student s1 = new Student("Mike", "Wilson");
    City c = new City("London");
    City c1 = new City("London");
    s.setCity(c);
    s1.setCity(c1);
    session.save(c);
    session.save(c1);
    session.save(s);
    session.save(s1);

我在表Cities 中有两行同名。我与其中一个联系在一起的迈克·泰森(Mike Tyson),与其中第二位联系在一起的迈克·威尔逊(Mike Wilson)。如何消除这种行为?

【问题讨论】:

    标签: java mysql sql hibernate


    【解决方案1】:

    当然你有两个同名的城市!您已经创建了两个同名城市并存储了它们!为什么你认为有什么魔法可以统一这两个对象???

    这个呢:

    Student s = new Student("Mike", "Tyson");
    Student s1 = new Student("Mike", "Wilson");
    City c = new City("London");
    s.setCity(c);
    s1.setCity(c);
    session.save(c);
    session.save(s);
    session.save(s1);
    

    【讨论】:

    • 您发布的代码运行良好.. Soo.. 我不能像我在第一篇文章中写的那样做吗?真可惜:P
    • 想象一下,如果 hibernate 自动从两个对象中取出一个对象,会有多少人会在这里提问!感谢上帝,它的工作原理很简单!
    • Ok.. ^^ 但是当我从 Cities 中选择行并将其设置为 Student 时,它会自动将 Student 与现有行关联?
    • 当然可以!您可以从数据存储中查询对象并将其分配给现有或新实体。
    • 您应该对城市名称有一个唯一的约束以避免此类问题!然后,如果您尝试两次插入同一个城市,则会出现异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多