【发布时间】:2021-08-18 09:46:44
【问题描述】:
我有两个实体(用户、汽车)。有人可以告诉如何设置这个一对一的映射。我的代码不起作用。错误:org.hibernate.AnnotationException: Unknown mappedBy in: hiber.model.Car.user, referenced property unknown: hiber.model.User.car
用户实体包含加入到 mysql 列 carId 的 Car car 字段。此列是与 cars 表中的 id 链接的外键
@Entity
@Table(name = "users")
public class User {
...
@OneToOne
@JoinColumn(name = "carId")
private Car car;
...
}
汽车实体包含用户用户字段
@Entity
@Table(name = "cars")
public class Car {
...
@OneToOne(mappedBy = "car")
private User user;
...
}
public class Main {
...
UserService userService = context.getBean(UserService.class);
CarService carService = context.getBean(CarService.class);
User user1 = new User("User1", "Lastname1", "user1@mail.ru");
Car car1 = new Car("Car", 1);
carService.add(car1);
user1.setCar(car1);
userService.add(user1);
...
}
@Service 和 @Repository 类:
public class UserServiceImpl {
...
@Autowired
private UserDao userDao;
public void add(User user) {
userDao.add(user);
}
...
}
在没有映射的情况下一切正常。实体分别写入数据库。
public class UserDaoImpl {
...
@Autowired
private SessionFactory sessionFactory;
public void add(User user) {
System.out.println(user.toString());
sessionFactory.getCurrentSession().save(user);
}
...
}
public class CarServiceImpl {
...
@Autowired
private CarDao carDao;
public void add(Car car) {
carDao.add(car);
}
...
}
public class CarDaoImpl {
...
@Autowired
private SessionFactory sessionFactory;
public void add(Car car) {
sessionFactory.getCurrentSession().save(car);
}
...
}
【问题讨论】:
标签: java mysql spring hibernate hibernate-mapping