【发布时间】:2016-01-12 09:44:46
【问题描述】:
当我持久化具有顺序的列表时,数据库中的结果具有不同的顺序。如何在 JPA 中保持与列表顺序的多对多关系?
@Entity
@Table(name = "house")
public final class House {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Basic(optional = false)
@Column(name = "name")
private String name
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "house_room",
joinColumns =
@JoinColumn(name = "id_house", referencedColumnName = "id"),
inverseJoinColumns =
@JoinColumn(name = "id_room", referencedColumnName = "id"))
private List<Room> rooms;
}
房屋对象:
Room room1 = new Room();
room1.setName("Kitchen");
Room room2 = new Room();
room2.setName("Bathroom");
Room room3 = new Room();
room3.setName("Bedroom");
List<Run> runs = new ArrayList<Run>();
rooms.add(0,room2);
rooms.add(1,room1);
rooms.add(2,room3);
House cottage = new House();
cottage.setRooms(rooms);
persist(cottage); // order in database should be "room2", "room1" then "room3" but it is saved as "room1", "room2" then "room3"
【问题讨论】:
-
数据库记录没有“顺序”。
-
已更正。我的错误
-
最终无关紧要,数据库中的记录仍然没有任何特定的顺序。连接表是否有特定的列?
-
还没有,所以我必须添加订单列。感谢您的帮助。
-
我已经可以预测下一个问题了:如何在ManyToMany映射中设置连接表的列?
标签: java jpa many-to-many eclipselink