【发布时间】:2023-03-09 04:58:01
【问题描述】:
我正在做一个项目,我遇到了 JPA 关系的问题。有人建议我在另一个线程上更改一些内容,但是我仍然无法使其正常工作。
我遇到了一个异常,我知道问题出在哪里,但不知道如何解决。
这里是用户类:
@Entity
@Table(name = "user")
public class UserModel implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "password", length = 500, nullable = false)
private String password;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Car> cars;
}
这是汽车类:
@Entity
@Table(name = "car")
public class Car implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(length = 11)
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "make", nullable = false)
private String make;
@Column(name = "model", nullable = false)
private String model;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "id") //here is where the exception throws (duplicated ID or com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'user_model_id' in 'field list' if I change that to user_model_id.
private UserModel userModel;
}
这里是服务实现:
@Component
@Transactional(readOnly = true)
public class CarServiceImpl implements CarService {
@Inject
private CarRepository carRepository;
@Inject
private UserRepository userRepository;
@Override
@Transactional(readOnly = false)
public Car addCar(Long userId, Car car) {
User user = userRepository.findOne(userId);
user.getCars().add(car);
car.setUser(user);
carRepository.save(car);
return car;
}
非常感谢任何帮助。
非常感谢
【问题讨论】:
-
能否请您链接到您提到的其他线程?另外,请发布异常的堆栈跟踪。
-
我在你的代码sn-p中没有找到这个方法:user.getGpsLocationModels()
-
您好 Cascer,感谢您的回复。请使用其他线程和完整的堆栈跟踪找到已编辑的帖子
-
嗨 Naman,对不起,这是一个错字,它是 getCars(一个 ArrayList 集合)。谢谢你的位置。
-
您对 1-N bidir FK 关系的映射基本上是错误的。不能把N方的PK当成FK给1方! (从那时起,每个集合中只能有 1 个元素!!!)。您需要一个单独的 FK 列。您将找到的所有 JPA 参考文档都清楚地告诉您如何执行此操作。这里datanucleus.org/products/accessplatform_5_0/jpa/orm/…
标签: java mysql jpa spring-boot