【问题标题】:In java hibernate can you have a model that is not an entity?在 java hibernate 中你可以有一个不是实体的模型吗?
【发布时间】:2020-11-12 21:24:18
【问题描述】:

当我尝试编译 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.core.model.Team.members[com.core.model.User] 时出现此错误

我的模型叫做 User ,它用于组合另外两个模型,一个从 keycloak 获取数据,另一个从 Postgres 获取数据。此表不使用@entity,因为它未附加到表。有什么我想念的吗?

这里是代码

@Data
public class User {

   @NonNull
    private KeycloakUser keycloakUser;
 
    private OtherUser otherUser;

    public User(@NonNull KeycloakUser keycloakUser, @NonNull OtherUser otherUser) {
        this.keycloakUser = keycloakUser;
        this.otherUser = otherUser;
    }
}

【问题讨论】:

  • 不确定我是否关注。错误非常简单:您是否希望使用 JPA 将 Team.members 集合中的 com.core.model.Users 持久化到您的数据库中?如果是这样,请使用 @Entity 注释 User。如果没有,请制作 Team.members @Transient 并删除 @OneToMany JPA 抱怨的内容。如果我以某种方式误解了这个问题,请解释一下“不是实体的模型”是什么意思。
  • @crizzis 谢谢,您提出的问题帮助我专注于在哪里找到问题。还没找到,但至少对去哪里有更好的了解

标签: java spring hibernate model


【解决方案1】:

您必须有一个不是实体的模型。您的模型类必须与实体分开。

class User {
             
  private KeycloakUser keycloakUser;
             
  private OtherUser otherUser;
             
}

User user = new User();
userService.saveUser(user);

// UserService

void saveUser(User user) {
    UserEntity userEntity = userMapper.toUserEntity(user.getOtherUser());
    userRespository.save(userEntity);

    CreateUserRequest request = userMapper.toCreateUserRequest(user.getKeycloakUser());
    keyCloakClient.createUser(request);
}

// UserMapper

UserEntity toUserEntity(OtherUser user) {
    UserEntity result = new UserEntity();
    result.setName(user.getName());

    return resut;
}
   

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2012-02-20
    • 2017-01-20
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多