java - 在 java hibernate 中你可以有一个不是实体的模型吗?
问题描述
尝试编译时出现此错误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;
}
}
解决方案
您必须有一个不是实体的模型。您的模型类必须与实体分开。
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;
}
推荐阅读
- javascript - 使用 d3.drag 拖动元素组时的跳跃行为
- arrays - 如何在c中创建数组的链表
- .net - 从下拉列表中选择的值在模型页面中为空
- r - R - 用于将列文本拆分为新列的 For 循环
- java - AWS 上 Flink 的空文件附加程序错误
- elasticsearch - 从 DBeaver 连接 Elasticsearch
- bootstrap-4 - 我在为我的网站修复标题中的间距时遇到问题(引导程序 4)
- python - 使用 Jupyter 笔记本无法从“tensorflow.python.compiler.tensorrt”导入名称“trt_convert”
- php - 无法解析的依赖解析[参数#1[
$var]] 类 App\View\Components\Header(View:laracurd\resources\views\welcome.blade.php) - android - 如何将 TextView 相对于另一个居中 - Android Studio