如何使用jpa将一个简单的类(非实体)与dto(Entity)类映射 [英] How to map one simple class(not an entity) with dto(Entity) class using jpa
问题描述
我尝试使用非@Entity类进行@OneToOne映射,但看来我做错了,请帮忙.这是以下类的错误日志.
I tried @OneToOne Mapping with non @Entity class but it seems i am doing something wrong please help. Here is error log for the following classes.
由以下原因引起:org.hibernate.AnnotationException:com.package.model.Hotel.address上的@OneToOne或@ManyToOne引用了未知实体:com.package.model.Address
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.package.model.Hotel.address references an unknown entity: com.package.model.Address
这是我的 Address.java
Here is my Address.java
private String street;
private String city;
private String state;
private int pincode;
private String country;
private String locationCoordinates;
//Getters and setters removed from the code
这是我的 Hotel.java
Here is my Hotel.java
@Id
@GeneratedValue
private int id;
private String password;
private String name;
private String contactPerson;
private String email;
private String countryCode;
private long phone1;
private long phone2;
@OneToOne(cascade=CascadeType.ALL)
private Address address;
private String description;
地址类不是@Entity类只有酒店类具有@Entity.现在,我试图使用spring和JPA将值 Address.java 的数据插入/创建(表)数据到单个酒店表中,而我在Eclipse控制台中遇到了麻烦.
Address class is not @Entity class Only Hotel class have @Entity. Now i am trying to insert/create(table) data with the value of Address.java using spring and JPA into a single hotel table, And i am getting above complain in my Eclipse console.
这是我试图从中获取数据的RestController
Here is my RestController from where i am trying to get data
@Autowired
private RoomRepository roomRepository;
//RoomRepository is Interface which is extending JpaRepository
@GetMapping("hotels")
public List<Room> retriveAllHotels(){
return roomRepository.findAll();
}
推荐答案
只需:
- 将地址类标记为@Embeddable
- 将指向酒店类地址的链接标记为@Embedded
- 删除@OneToOne
,地址"字段将成为酒店实体的一部分
and the Address fields will be a part of a Hotel entity
这篇关于如何使用jpa将一个简单的类(非实体)与dto(Entity)类映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!