小编dom*_*nik的帖子

Thrift,Avro,Protocolbuffers - 他们都死了吗?

在一个宠物项目(cassandra,spark,hadoop,kafka)上工作我需要一个数据序列化框架.检查常见的三个框架 - 即Thrift,Avro和Protocolbuffers - 我注意到它们中的大多数似乎都死了,最多每年有2个小版本.

这让我有两个假设:

  • 只要不需要新功能,它们就像这样的框架一样完整,只需在维护模式下休息
  • 对于这样的框架没有理由存在 - 对我来说不明白为什么.如果是这样,有什么替代品?

如果有人能给我一些暗示我的假设,欢迎任何意见.

serialization hadoop thrift protocol-buffers avro

22
推荐指数
2
解决办法
2万
查看次数

Spring数据jpa分离实体

我开始使用Spring Data JPA在Spring Boot应用程序上设置用户和角色之间的ManyToMany关系.

此关系在User类中定义如下:

@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name="user_role", joinColumns = {@JoinColumn(name="user_id")}, inverseJoinColumns = {@JoinColumn(name="role_id")})
private Set<UserRole> roles;
Run Code Online (Sandbox Code Playgroud)

我用以下方法创建角色

@Transactional
private void generateSeedRoles() {
    UserRole adminRole = new UserRole(RoleEnum.ADMIN.toString());
    userRoleRepository.save(adminRole);

    UserRole userRole = new UserRole(RoleEnum.USER.toString());
    userRoleRepository.save(userRole);
}
Run Code Online (Sandbox Code Playgroud)

之后为用户分配角色失败:

@Transactional
private void generateSeedUsers() {
    UserRole adminRole = userRoleRepository.findUserRoleByRoleName("ADMIN");

    User user = User.createUser("user1", "user1@user.com", "pass");
    user.setRoles(new HashSet<UserRole>(Arrays.asList(adminRole)));

    userRepository.save(user);
}
Run Code Online (Sandbox Code Playgroud)

抛出以下异常(为便于阅读而格式化):

org.springframework.dao.InvalidDataAccessApiUsageException: 
detached entity passed to persist: co.feeb.models.UserRole; 
nested exception is org.hibernate.PersistentObjectException: 
detached entity passed to persist: co.feeb.models.UserRole
Run Code Online (Sandbox Code Playgroud)

但是,如果在创建关系之前保存用户,则它可以正常工作:

@Transactional …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa spring-data-jpa

3
推荐指数
1
解决办法
5854
查看次数