[英]How to create One-to-Many and Many-to-One Relationship from one class to another class in Java/IntelliJ
[英]Java Spring one-to-many many-to-one
在我的 spring 项目中,我想将名为 room 和 product 的实体相互连接起来。
首先,我将添加一家酒店,然后我将添加酒店的房间
一个酒店会有多个房间,一个房间会有一个酒店
我使用 ManyToOne 和 OneToMany 进行连接,但是在列出时房间数组是空的。
我想在产品中列出房间。 我应该怎么写代码
像这样
{
"status": true,
"result": [
{
"pid": 28,
"otel_name": "Hi Otel",
"rooms": [],
"description": "hi otel",
"location": {
"lid": 11,
"city": "Antalya",
"district": "Kaş"
},
"taxonomies": [
{
"tax_id": 25,
"name": "Disco",
"description": "Disco",
"product": null
},
{
"tax_id": 26,
"name": "Suitable for family",
"description": "suitable for family",
"product": null
}
],
"star_ratings": 5
}
]
}
产品.java
@Entity
@Data
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer pid;
@NotBlank(message = "Otel name can not be blank")
@Length(message = "Otel name must contain min 2 max 50", min = 2, max=50)
private String otel_name;
@OneToMany
@JoinColumn(name="room_id")
private List<Rooms> rooms = new ArrayList<>();
@NotBlank(message = "Description name can not be blank")
@Length(message = "Description must contain min 2 max", min = 2)
private String description;
@ManyToOne
@JoinColumn(name="lId",referencedColumnName = "lid")
private Location location;
@OneToMany(cascade ={CascadeType.MERGE})
@JoinTable(name="products_taxonomy",joinColumns = @JoinColumn(name="p_id" ),
inverseJoinColumns = @JoinColumn( name = "t_id", referencedColumnName = "tax_id")
)
private List<Taxonomy> taxonomies;
@PositiveOrZero(message = "Star ratings must be between 0 5")
@NotNull(message = "Star ratings must be between 0 5")
@Max(value = 5, message = "Star ratings must be between 0 5")
private Integer star_ratings;
}
客房.java
@Entity
@Data
public class Rooms {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer room_id;
@ManyToOne
@JoinColumn(name="p_id",referencedColumnName = "pid")
private Product product;
@NotBlank(message = "Name can not be blank")
@Length(message = "Name must contain min 2 max 20 character.", min = 2, max = 20)
private String name;
@NotBlank(message = "Description can not be blank")
@Length(message = "Description must contain min 2 max 255 character.", min = 2, max = 255)
private String description;
@PositiveOrZero(message = "Star ratings must be positive")
@NotNull(message = "Bed not null")
private Integer bed;
@PositiveOrZero(message = "Price must be positive")
@NotNull(message = "price not null")
private Integer price;
@PositiveOrZero(message = "Price must be positive")
@NotNull(message = "price not null")
private Integer quantity;
}
@OneToMany
@JoinColumn(name="room_id")
private List<Rooms> rooms = new ArrayList<>();
在此处添加引用的列名称,现在 spring 不知道房间 class 中的 ID 是什么
尝试这个:
@OneToMany(mappedBy = "product", cascade = CascadeType.ALL)
private List<Rooms> rooms = new ArrayList<>();
@ManyToOne(fetch = FetchType.LAZY)
private Product product;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.