【发布时间】:2021-06-28 17:05:25
【问题描述】:
所以,这是数据库:
drop database if exists demo;
create database demo;
use demo;
create table user_entity(
user_id INT primary key auto_increment,
user_name varchar(30),
medicine_id int
);
create table medicine_entity(
medicine_id int primary key auto_increment,
medicine_name varchar(30)
);
alter table user_entity
add foreign key(medicine_id) references medicine_entity(medicine_id);
insert into medicine_entity(medicine_name) values('paracetamol');
insert into medicine_entity(medicine_name) values('vix');
insert into user_entity(user_name, medicine_id) values('a',1);
insert into user_entity(user_name, medicine_id) values('a',2);
insert into user_entity(user_name, medicine_id) values('b',2);
insert into user_entity(user_name, medicine_id) values('c',1);
该数据库的适当映射是什么,实体类:
用户实体类:
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
@Entity
public class UserEntity
{
public UserEntity()
{
super();
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long userId;
private String userName;
@ManyToMany
private Set<MedicineEntity> medicineId;
public long getUserId()
{
return userId;
}
public void setUserId(long userId)
{
this.userId = userId;
}
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public Set<MedicineEntity> getMedicineId()
{
return medicineId;
}
public void setMedicineId(Set<MedicineEntity> medicineId)
{
this.medicineId = medicineId;
}
}
MedicineEntity.class:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class MedicineEntity
{
public MedicineEntity()
{
super();
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long medicineId;
private String medicineName;
@ManyToMany
private Set<UserEntity> userId;
public long getMedicineId()
{
return medicineId;
}
public void setMedicineId(long medicineId)
{
this.medicineId = medicineId;
}
public String getMedicineName()
{
return medicineName;
}
public void setMedicineName(String medicineName)
{
this.medicineName = medicineName;
}
}
我正在考虑两个实体上的@ManyToMany 关系,但不确定。所以,通过正确的关系映射更正代码来帮助我,并详细说明为什么要使用这种关系,更正的作用是什么,请不要关闭这个问题。
【问题讨论】:
-
对于
ManyToMany映射,您需要单独的映射表来映射用户和药物。 -
请正确格式化您的代码。 --- 由于关系归 user_entity 所有,
@ManyToOneonUserEntity(@OneToManyonMedicineEntity仅在需要时)似乎合适。如果单个用户可以拥有多种药物,则将使用多对多关系。
标签: java spring-boot jpa hibernate-mapping entity-relationship