我知道这在某种程度上是一个简单的继承问题,但是我想我会在这里仔细检查以确保。我正在做一个Java棒球应用程序,理想情况下,我希望有两个表。一项用于TEAM击球统计,另一项用于PLAYER击球统计。即使我从中获取数据的API始终具有完全相同的字段(运行,home_runs,batting_average等)
我正在使用JPA定义表,并且我不想为两个表定义两个类。如..
@Entity
@Table(name="PLAYER_BATTING_STATS")
public class PlayerBattingStats implements Serializable {
//All 23 fields of data here ...
然后立即创建。.
@Entity
@Table(name="TEAM_BATTING_STATS")
public class TeamBattingStats implements Serializable {
//Exact Same columns here for different table
是否可以创建一个类,但是让JPA知道我想要两个单独的表?在投球和打球等方面,我也必须这样做。这样可以节省很多开销。
谢谢,
答案 0 :(得分:1)
我相信,拥有一个具有通用字段的基类并使用@MappedSupperClass
映射该类,便可以实现您的目标。
基类:
@MappedSuperClass
abstract class BaseBattingStats implements Serializable
//common fields go here
玩家职业:
@Entity
@Table(name="PLAYER_BATTING_STATS")
public class PlayerBattingStats extends BaseBattingStats implements Serializable {
//fields that are specific to Player class go here
团队班级:
@Entity
@Table(name="TEAM_BATTING_STATS")
public class TeamBattingStats extends BaseBattingStats implements Serializable {
//fields that are specific to Player class go here
我假设您确实有针对这两个类别的字段,如果所有字段都是公用的,并且您只想对击球统计信息条目进行分类,则应考虑使用单个类别,并且它们具有引用“统计信息类型(例如玩家或球队)。