【问题标题】:Mapping relationships for One to Many and a new column addition一对多和新列添加的映射关系
【发布时间】:2020-05-09 08:11:39
【问题描述】:

我有两张牌桌 Player 和 Match。我需要 Player 和 Match 之间的 OnetoMany 关系,这样我得到的 JSON 输出是这样的:-

{
     id : 1,
     name : "Peter",
     nationality: "Indian",
     matches: [
                    {
                       id : 1,
                       location: "Mohali"
                       TournamentName: "FA Cup"
                    },
                    {
                       id : 2,
                       location: "Kolkata"
                       TournamentName: "ISL league"
                    }
             ]
}

您能否建议如何定义注释并获得上述结果?我有这样写的代码:-

@Entity
public class Match {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="match_id")
    private Integer mId;

    private String seriesName;

    private String location;

    @ManyToOne
    private Player player;

播放器是这样的:-

@Entity
public class Player {

    @Id
    @GeneratedValue
    @Column(name="player_id")
    private Integer pId;

    private String pName;

    private String cricketTeam;

    @OneToMany(mappedBy = "player" ,cascade = CascadeType.ALL)
    private List<Match> matches;

除此之外,我还需要在结果 JSON 中有一个附加属性:-

totalGoals: 8

此属性将计算球员在每场比赛中的总进球数,因此必须有一个包含以下列的新表:- "player_id" 、 "match_id" 和 "totalGoal"

如果你能提供一个好的方法,那将非常有帮助

【问题讨论】:

    标签: java hibernate spring-boot spring-data-jpa mapping


    【解决方案1】:

    对于你的第一个问题,我认为你不需要做任何额外的努力尝试使用 Player 作为返回对象到 RestController(我更喜欢 DTO 作为返回对象,如 PlayerDTO,因为你可以根据要求进行自定义更改)

    @RequestMapping<!--mapping--!>
    public ResponseEntity<Player> getPlayer(<expected Params as playerId>)
    {
        return ResponseEntity.ok(service.find(id));
    }
    

    对于第二个问题,您可以在匹配对象本身中维护一个参数 totalGoals,除非您有其他要求,否则您不需要另一个映射表

    【讨论】:

    • 我需要维护第三个连接表,其中包含 player_id 、 match_id 和总进球数列
    • 首先,我收到一个错误,即:-“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在附近使用的正确语法”
    • 您是在使用任何预定义的 CrudRepository 方法还是编写了自己的自定义查询?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2018-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多