gpt4 book ai didi

java - JPA UML 继承重叠

转载 作者:行者123 更新时间:2023-12-01 05:20:37 27 4
gpt4 key购买 nike

我是 JPA 的新人。我有一个名为 Person 的父类(super class)和两个子类 Teacher 和 Student。大多数时候一个人只是一个老师或一个学生,但有时一个人既是学生又是老师,我需要坚持下去。有谁知道如何在 JPA 中映射 UML 继承重叠?可能吗?

最佳答案

我认为你应该以另一种方式思考,而不是使用“是A”让你思考继承,你可以将其视为一个具有多个角色的人,所以如果你这样思考,您可以通过聚合来解决它,如下所示

public class Person {
private TeacherProfile teacherProfile;
private StudentProfile studentProfile;
}

这会给你带来美丽的改变:

public class Person {
private Set<Profile> profiles;
}

具有以下类

public abstract class Profile {
private String name;
//common data
}

public class TeacherProfile extends Profile {
//teacher data
}

public class StudentProfile extends Profile {
//student data
}

这可以优雅地解决你的问题,而不会破坏你的继承思想。

我可以解释为什么你最初的想法,即使在关系数据库上是可能的,但在对象世界下是不可能的,考虑通过ID获取人,如果你有一个具有两个“角色”的人,那么什么实例会 hibernate 返回吗?学生会错,老师也会错。如果 java 是一种多重继承语言,那么这是可能的,它有自己的问题:)

希望我已经向您解释清楚了。

关于java - JPA UML 继承重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10475800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com