Jpa Play框架为两个多对多关系生成一个表

Jpa Play框架为两个多对多关系生成一个表,jpa,playframework,many-to-many,ebean,playframework-2.2,Jpa,Playframework,Many To Many,Ebean,Playframework 2.2,my Game.java中的一个片段: @Entity public class Game extends Model{ @Id public Long id; @ManyToOne public User user; @ManyToMany(cascade = CascadeType.ALL) public List<Checkpoint> visitedCheckpoints = new ArrayList<Checkp

my Game.java中的一个片段:

@Entity
public class Game extends Model{

    @Id
    public Long id;

    @ManyToOne
    public User user;

    @ManyToMany(cascade = CascadeType.ALL)
    public List<Checkpoint> visitedCheckpoints = new ArrayList<Checkpoint>();

    @ManyToMany(cascade = CascadeType.ALL)
    public List<Checkpoint> answeredCheckpoints = new ArrayList<Checkpoint>();
}
@实体
公共类博弈模型{
@身份证
公共长id;
@许多酮
公共用户;
@多个(级联=级联类型.ALL)
public List visitedCheckpoints=new ArrayList();
@多个(级联=级联类型.ALL)
public List answeredCheckpoints=new ArrayList();
}
在自动SQL evolution中,Play只创建了一个多对多关系表:
game\u checkpoint
,其中只有两列是外键:
game\u id
checkpoint\u id
。这导致了一个错误:我添加了一个已访问的检查点,但由于主键约束冲突,因此无法添加与已应答的检查点相同的检查点


如何强制Play使用两个表生成SQL:
game\u visitedcheckpoint
game\u answeredcheckpoint
以便以后我可以分别操作这两个检查点列表?

通过明确定义表名解决了这一问题:

@Entity
public class Game extends Model{

    @Id
    public Long id;

    @ManyToOne
    public User user;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name="game_visitedcheckpoint")
    public List<Checkpoint> visitedCheckpoints = new ArrayList<Checkpoint>();

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name="game_answeredcheckpoint")
    public List<Checkpoint> answeredCheckpoints = new ArrayList<Checkpoint>();
}
@实体
公共类博弈模型{
@身份证
公共长id;
@许多酮
公共用户;
@多个(级联=级联类型.ALL)
@JoinTable(name=“game\u visitedcheckpoint”)
public List visitedCheckpoints=new ArrayList();
@多个(级联=级联类型.ALL)
@JoinTable(name=“game\u answeredcheckpoint”)
public List answeredCheckpoints=new ArrayList();
}