hibernate - 休眠批处理不适用于 EmbeddedId
问题描述
我加载用户朋友(来自外部系统)并且需要保存他们并保存关系。
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_id_generator")
@SequenceGenerator(name = "user_id_generator", sequenceName = "s_user_id", allocationSize = 100)
private Long id;
private String firstName;
private String lastName;
}
@Entity
public class Friends {
public Friends(Long userId, Long friendId) {
this.id = new FriendsId(userId, friendId);
}
@EmbeddedId
FriendsId id;
@Embeddable
@EqualsAndHashCode
public static class FriendsId implements Serializable {
private Long userId;
private Long friendId;
public FriendsId(Long userId, Long friendId) {
this.userId = userId;
this.friendId = friendId;
}
}
}
User user = ...
List<User> friends = loadUsers();
userRepository.saveAll(friends);
List<Friends> relations = new ArrayList<>();
for (User friend : friends) {
relations.add(user.getId(), friend.getId());
relations.add(friend.getId(), user.getId());
}
friendsRepository.saveAll(relations);
由于复杂的主键(@EmbeddedId),在这种情况下批处理不起作用是真的吗?
解决方案
推荐阅读
- c# - Xamarin forms with .netStandard 2.0, can't reference Core
- c - 用特殊情况更新矩阵
- mysql - SQL 错误 1452 而 UPDATE 非关键列
- mpi - Python 中的 mpi4py 或多处理?
- php - 使用 jQuery 触发动态按钮 ID
- javascript - 无法检测到用户何时到达手机浏览器的末尾
- swift - uiactivity 和 uiwebview 委托
- javascript - RXJS6 - 从返回 Observable 的 Promise 函数返回 Observable?
- cuda - 64位线程分离共享内存最小化bank冲突的策略
- java - JMS如何读取队列中的多个文件