我正在构建一个简单的Spring应用程序,我需要帮助为一些JPA实体找到合适的设计,以下是我的情况:
FirstResource
有很多动作SecondResource
有很多动作ThirdResource
有很多动作我的目标:我希望能够为特定内容添加操作 例如,资源,或列出对资源执行的所有操作。
4个实体是(FirstResource,SecondResource,ThirdResource,Action),它们应该是这样吗? :
@Entity
public class Action implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idAction;
private String nameAction; // + gettes & setters...
}
@Entity
public class FirstResource implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idFirstResource;
private int unitNumber; // + gettes & setters...
}
@Entity
public class SecondResource implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idSecondResource;
private String nameSecondResource; // + gettes & setters...
}
@Entity
public class ThirdResource implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idThirdResource;
private boolean Confirmed; // + gettes & setters...
}
类Action
应该为每个@ManyToOne
添加带Resources
注释的引用吗?如果是,有更好的方法吗?
答案 0 :(得分:1)
您可以使用继承。
将抽象类AbstractResource定义为实体:
@Entity
public abstract class AbstractResource implements Serializable {
@Id @GeneratedValue
private long id;
@OneToMany
private List<Action> actions;
...
}
然后确保您的资源类扩展AbstractResource:
@Entity
public class FirstResource extends AbstractResource
然后您可以在Action实体中引用您的资源:
@Entity
public class Action implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idAction;
@ManyToOne
private AbstractResource resource;
...
}
由于你不能将MappedSuperClass与ManyToOne关系一起使用,你不能在你的情况下使用@MappedSuperClass。