提问者:小点点

是否可以使用存储在连接表中的自定义整数值在JPA中排序多对多关系?


我有两个实体,雇主语言,它们之间有多对多的关系。每个雇主可以有多个语言enitites,它们有它们可以说的语言的首选顺序。我想将首选顺序存储在连接表中,并通过有序的List检索它

这是我的雇主Language实体的示例:

@Entity
public class Employer {
    @Id
    private Long id;
    //.....
    @ManyToMany
    private List<Language> languages;
    //.....
}
@Entity
public class Language {
    @Id
    private Long id;
    //.....
}

这就是数据库表的样子:

employer table:
| id | bigint |
....

language table:
| id | bigint |
....

employer_language table:
| employer_id | bigint |
| language_id | bigint |
| order_index | int    |

JPA允许这样做吗?

我考虑过使用包含Language作为键和按值排序索引的Map字段,但我认为可能有更好的解决方案。


共1个答案

匿名用户

是的,这是可能的。您必须使用@OrderCol列注释。在您的示例中,您将有如下内容:

@Entity
public class Language {
    @Id
    private Long id;
    //.....
}

@Entity
public class Employer {
    @Id
    private Long id;
    //.....
    @ManyToMany
    @OrderColumn(name = "order_index")
    private List<Language> languages;
    //.....
}