假设有下面的代码
[code]
// 所有工作的基类
@MappedSuperclass
public abstract class Work {
}
// 编写代码的工作
@Entity
public class CodeWork extends Work{
@OneToMany(mappedBy="codeWork")
private List<Employee> employees;
}
// 做界面的工作
@Entity
public class UIWork extends Work{
@OneToMany(mappedBy="uiWork")
private List<Employee> employees;
}
// 员工
@Entity
public class Employee{
@ManyToOne
@JoinColumn(name="codeWork_id", nullable=false, updatable=false)
private CodeWork codeWork;
@ManyToOne
@JoinColumn(name="uiWork_id", nullable=false, updatable=false)
private UIWork uiWork;
}
[/code]
我总觉得这样做特别不好:
1) 像 private List<Employee> employees; 这个部分完全可以放到 Work 里面,但是如果放到Work里面的话mappedBy就不知道写哪个了;
2) Employee里面也是如此,Work的每个子类都要写在里面要搞死的。
请帮忙重构一下,多谢多谢。
PS:第一次发帖难免有点紧张,呵呵
[code]
// 所有工作的基类
@MappedSuperclass
public abstract class Work {
}
// 编写代码的工作
@Entity
public class CodeWork extends Work{
@OneToMany(mappedBy="codeWork")
private List<Employee> employees;
}
// 做界面的工作
@Entity
public class UIWork extends Work{
@OneToMany(mappedBy="uiWork")
private List<Employee> employees;
}
// 员工
@Entity
public class Employee{
@ManyToOne
@JoinColumn(name="codeWork_id", nullable=false, updatable=false)
private CodeWork codeWork;
@ManyToOne
@JoinColumn(name="uiWork_id", nullable=false, updatable=false)
private UIWork uiWork;
}
[/code]
我总觉得这样做特别不好:
1) 像 private List<Employee> employees; 这个部分完全可以放到 Work 里面,但是如果放到Work里面的话mappedBy就不知道写哪个了;
2) Employee里面也是如此,Work的每个子类都要写在里面要搞死的。
请帮忙重构一下,多谢多谢。
PS:第一次发帖难免有点紧张,呵呵
本文探讨了一种不合理的实体关系设计,并提出重构建议。通过分析现有代码中存在的问题,如重复属性和多对多关联,提出了改进方案。旨在提高代码质量和维护性。
3510

被折叠的 条评论
为什么被折叠?



