- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当我尝试获得一对多和多对一关系时,车辆表上的连接列出现问题。为什么 hibernate 正在搜索列 USER_ID 而不是将其连接到表中?我知道加入的目的,但是当我尝试将它与映射的 By 属性一起使用时,我得到了这个错误。该代码有什么问题?
我得到的异常:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'USER_ID' in 'field list'
用户表:
@Entity
@Table(name = "users")
public class User {
public User(){}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", first_name='" + first_name + '\'' +
", salary=" + salary +
", last_name=" + last_name +
'}';
}
public Collection<Vehicle> getVehicles() {
return vehicles;
}
public void setVehicles(Collection<Vehicle> vehicles) {
this.vehicles = vehicles;
}
@OneToMany(mappedBy = "user")
private Collection<Vehicle> vehicles = new ArrayList<>();
public Collection<Address> getAddresses() {
return addresses;
}
public void setAddresses(Collection<Address> addresses) {
this.addresses = addresses;
}
@ElementCollection // for saving the collection or persist it to database
@JoinTable(joinColumns = @JoinColumn(name = "fk_user_id")) // will add to the fk created table renamed column "fk_user_id"
private Collection<Address> addresses = new ArrayList<>();
@Id
@Column(name = "user_id")
private int id;
@Column(name = "first_name")
private String first_name;
@Column(name = "salary")
private int salary;
@Column(name = "last_name")
private String last_name;
}
车辆:
@Entity
@Table(name = "vehicle")
public class Vehicle {
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@ManyToOne
@JoinColumn(name = "USER_ID")
private User user;
public int getVehicle_id() {
return vehicle_id;
}
public void setVehicle_id(int vehicle_id) {
this.vehicle_id = vehicle_id;
}
public String getVehicle_name() {
return vehicle_name;
}
public void setVehicle_name(String vehicle_name) {
this.vehicle_name = vehicle_name;
}
@Id
private int vehicle_id;
private String vehicle_name;
}
最佳答案
你对待 @JoinColumn
的方式与你想象的有点不同。
当你有配置时:
public class Vehicle {
@ManyToOne
@JoinColumn(name = "USER_ID")
private User user;
当 VEHICLE
和 USERS
表连接时,它告诉持久性提供程序使用 VEHICLE.USER_ID
列。
默认情况下,在 USERS
表端,使用主键,在本例中是具有相同名称的列:USERS.USER_ID
(除非您指定在 @JoinColumn
中显式 referencedColumnName
属性)。
最重要的是,您的 VEHICLE 表中需要有一个 user_id
列。
关于java - Hibernate mappedBy 和@JoinColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42365989/
我有以下简单的设计: (来源:kawoolutions.com) 这基本上是 JPA 不支持的非不相交继承的一种解决方法。人员可以单独存在,但可以选择有单个玩家实体、单个教练实体或两个实体来完成逻辑。
You create a bidirectional one-to-one relationship using fields on both classes, with an annotation
我有一个查询,我碰巧有一个名为“SGOrdCompra”的表,将他与“SGPersona”链接了两次,表如下: Sgordcompra.java @Entity @Table(name = "`SGO
我想我理解属性 mappedBy 如果放入 @OneToMany 字段中意味着什么(即表示字段类型的表具有该表的外键)声明了 @OneToMany(mappedBy="...") ,但我不完全理解它的
我想将现有的 JPA 实体拆分为 POJO 父类(super class)和实体子类。我想将 POJO 父类(super class)放入一个库项目中,该项目可以被其他不使用 JPA 的项目引用。 我
例如,当我们在@OneToMany 中使用mappedBy 注解时,我们是否提到了类名或表名? 一个例子: @Entity @Table(name = "customer_tab") public c
我在带注释的对象中设置一对多关系时遇到问题。 我有以下几点: @MappedSuperclass public abstract class MappedModel { @Id @Ge
我创建了三个类 - User、UserSubscription 和 Subscription。我希望 UserSubscription 表中的用户应由 User 表中现有的用户引用。那么,如何使用ma
我有一个带有 Hibernate 注释的 Java 类,它引用另一个 POJO: @Entity @Table(name = "Patient_Visit_Transaction") public c
我仍然不确定哪种是处理 em.remove(entity) 的最佳实践,该实体位于 JPA 中使用 mappedBy 映射的多个集合中。 考虑像 Property 这样的实体引用三个其他实体:Desc
我正在开发 java 应用程序并使用 JPA 与数据库交互,我有两个重要的问题: 我想在两个类之间建立双向链接,因为我需要访问双方的数据。让我们以 A * -1 B 的两个类 A 和 B 为例(如 U
Foo 有: @ManyToMany(mappedBy = "foos") private Set bars 而酒吧有: @ManyToMany private Set foos 除了table是叫f
这个问题已经有答案了: What is cascading in Hibernate? [duplicate] (2 个回答) 已关闭 4 年前。 我正在学习 Hibernate 并遇到一个问题:ma
我有三个类,Site、GoupIP 和 IP 一个站点有一个或多个 GroupIP。一个 GroupIP 有一个或多个 IP。 代码如下: 网站 @Entity @Table(name = "site
当我想使用 persist 方法将新的 UserDetails 对象添加到我的数据库时,我的 JPA 数据库出现问题。然后我得到异常:“关键 hibernate 的重复条目 2”此异常与产品类相关。我
我在 Parent 中提供了一个简单的 oneToMany 关系,并在 Chile 实体类中提供了相应的 ManyToOne: 家长: @Entity @Table(name = "FormExtra
当我尝试获得一对多和多对一关系时,车辆表上的连接列出现问题。为什么 hibernate 正在搜索列 USER_ID 而不是将其连接到表中?我知道加入的目的,但是当我尝试将它与映射的 By 属性一起使用
错误:hibernate.AnnotationException: mappedBy 引用未知的目标实体属性 我知道为什么会出现错误,但我盯着它看的时间越长,就越找不到它:)。我只需要另一个人的观点。
首先,我的类(class): 用户 package com.patpuc.model; import java.util.List; import javax.persistence.Column;
下面两个声明到底有什么区别 B是拥有方 @Entity class A { @Id int id; @OneToOne B b; } @Entity class B { @Id
我是一名优秀的程序员,十分优秀!