我在Hibernate ORM世界中是全新的,最近阅读映射特别是一对多的关系。但我面临一些问题需要理解。
我正在使用此链接来了解hibernate关系。 https://dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-one-to-many-using-annotations-1.html
请看一下代码。
public class Student {
private long studentId;
private String studentName;
private Set<Phone> studentPhoneNumbers
//setter getter
}
public class Phone {
private long phoneId;
private String phoneType;
private String phoneNumber;
//setter getter
}
我明白了。
混乱就在这里。
Set<Phone> phoneNumbers = new HashSet<Phone>();
phoneNumbers.add(new Phone("house","32354353"));
phoneNumbers.add(new Phone("mobile","9889343423"));
Student student = new Student("Eswar", phoneNumbers);
session.save(student);
这只是一个代码session.save(student),在两个表中存储值吗?如果没有那么为什么我们没有编写代码来保存phoneNave(phoneNumbers)这样的phoneNumbers。
执行上面的代码后,该值将存储在表格或对象(STUDENT和PHONE)中吗?我想每次执行这段代码时,这个代码都会在两个表中插入值。我不喜欢它。我想要的价值应该只存储在第二张桌子上(PHONE)。
那么我将如何仅在PHONE对象中存储价值? 或者我们将如何实现这种关系,用户将通过组合框选择STUDENT并通过简单的文本框填充PHONE对象中的值。然后最后保存它。像产品/类别。
3.请帮助或建议一些在Web应用程序中实现hibernate(特别是一对多和多对多关系)的好教程。我见过很多教程,但所有这些都是通过main方法实现的。
抱歉英语不好 感谢。答案 0 :(得分:0)
是的,它应该将学生和电话号码保存在自己的表格中。如果你注对正确的方式。学生应该是这样的:
@Entity
@Table(name = "student")
public class Student {
@id
@GeneratedValue
private long studentId;
@column(name = "studentName")
private String studentName;
@OneToMany
private Set<Phone> studentPhoneNumbers
//setter getter
}
public class Phone {
private long phoneId;
private String phoneType;
private String phoneNumber;
//setter getter
}
然后还有一些配置要做。我建议你阅读本教程:https://www.tutorialspoint.com/hibernate/index.htm
对于您的代码,它并不多。但是如果你以正确的方式配置hibernate,你可以决定保存一个值的表/列