- 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/
这是简化的代码片段,省略了 IdClass 详细信息。我遇到的问题是表定义是: ClientPersonalityModel ( client_id int not null, personali
我正在编写一个 spring-boot、spring-mvc 应用程序。其中有两个实体:User 和 Task。该任务必须属于用户。我正在尝试使用外键、使用 @OneToMany、@ManyToOne
有关更多上下文,请参阅 my other question。 我想将我的 Employee 实体类加入到 Code 实体类中,但代码 PK 是复合的(DOMAIN、CODE),因为它列出了许多不同的代
我正在尝试使用 @JoinColumn 注释加入一个列,但我的列总是返回 null,我不确定为什么。 @Entity public class Blender implements Serializa
我有实体 User,其中包含实体 Actor 的字段,其中包含具有实体产品的字段。现在我希望数据库中的用户拥有有关产品 id 的信息,该信息使用产品上的 @JoinColum 存储在 Actor 中。
我使用 @JoinColumn 注释进行一对多映射: @JoinColumn(name="domainId",referencedColumnName="domainId")。 但是,表中的外键列名称
@ManyToOne @JoinColumn(name = "someValue" , referencedColumnName = "someOtherValue" ) 如果 2 个表通过 Many
我在尝试为数据库创建一些模型时遇到 JPA 问题。 我有这三个类(我只是将部分代码放在这里): GuideVersionLang @Entity public class GuideVersionLa
我可能只是误解了@JoinColumns 的工作原理,但是当我重用名称属性时出现错误。但是名称属性不映射到数据库列吗?我不应该能够重复使用它吗? 我遇到错误: Repeated column in m
根据 hibernate 文档, hibernate 团队强烈建议不要在没有连接表的情况下使用一对多单向映射。我想知道这是因为性能问题还是背后有任何其他原因。 说如果有一个员工可以有很多电话号码,那么
@ManyToOne(fetch = FetchType.LAZY) @JoinColumn (name = "account_id") private Account account; 工作正常。
我是 HQL 的初学者,并且我陷入了使用 HQL 检索 VesselOperator 记录的困境 我的代码如下所示。 CompanyId.java @Embeddable public class C
抱歉我的问题。实在无法理解我的错误。我在两个类之间有 Hibernate 关系,但是当我运行它时,日志给出了这个错误: org.hibernate.AnnotationException: mappe
我正在研究一个使用 JPA 的项目,我对此还很陌生。我遇到了一个我不太理解的逻辑。我有一个名为 A 的实体,它具有以下字段/列: @Column(name = "COD_UOP_COO") p
我正在将 JPA 与 EclipseLink (2.5.2) 结合使用。 我有以下实体: @Entity @Table(name="Consumer") public class Consumer i
我遇到以下问题:我想简单地加入表“市场”(主)和“电话”,但在使用注释执行此操作时遇到一些问题。 我只是想使用 Comercio.id 作为 Telefone.fk_id 中相应的外键,但它无法识别它
我有以下表格(仅显示最重要的列,A 和 B 不是真实姓名): table A { ... } table B { ... } table METADATA { KEY VALUE
在我的 JPA 类中,我有这个注释和我无法理解的语法 @JoinColumns({ @JoinColumn(name="RES_ID", referencedColumnName="ACCT_
有什么区别: @Entity public class Company { @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.L
我有很多映射实体,它们都是从抽象类 BaseEntityImpl 扩展而来的。 在这个类中,我有 1 个属性 company,注释如下: @ManyToOne(fetch=FetchType.EAGE
我是一名优秀的程序员,十分优秀!