- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个 hibernate 项目,并且 Car 和 CarDriver 之间有一个 @ManyToMany 关系。问题是这种关系也有属性,因此我使用一个连接到 Car 和 CarDriver 的单独实体,这个实体称为 CarUsage。
我的问题是,当我保留 CarUsage 对象时,Car 和 CarDriver 中的 CarUsage 列表不会填充这个新对象。
这是我的实体:
汽车:
@Entity
@Table(name = "car")
@Inheritance(strategy = InheritanceType.JOINED)
public class Car extends BaseEntity {
@Column(name = "registration_plate")
private String registrationPlate;
@OneToMany(mappedBy="car")
private List<CarUsage> carUsages;
public String getRegistrationPlate() {
return registrationPlate;
}
public void setRegistrationPlate(String registrationPlate) {
this.registrationPlate = registrationPlate;
}
public List<CarUsage> getCarUsages() {
return carUsages;
}
public void setCarUsages(List<CarUsage> carUsages) {
this.carUsages = carUsages;
}
}
汽车司机
@Entity
@Table(name="car_driver")
public class CarDriver extends BaseEntity {
@OneToMany(mappedBy="carDriver")
private List<CarUsage> carUsages;
public List<CarUsage> getCarUsages() {
return carUsages;
}
public void setCarUsages(List<CarUsage> carUsages) {
this.carUsages = carUsages;
}
}
还有我的 JoinTable CarUsage:
@Entity
@Table(name = "car_usage")
public class CarUsage extends BaseEntity {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "car_id")
private Car car;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "car_driver_id")
private CarDriver carDriver;
@Column(name = "start_date")
private Date startDate;
@Column(name = "end_date")
private Date endDate;
@Column(name = "active", nullable = false)
private boolean active;
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
public CarDriver getCarDriver() {
return carDriver;
}
public void setCarDriver(CarDriver carDriver) {
this.carDriver = carDriver;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
}
当我保留新的 CarUsage 时,Car 和 CarDriver 中的列表不会更新。
CarUsage carUsage = carUsageCreator.makeCarUsage(companyCar, carDriver, new Date(), new Date(), true);
carUsageDao.persist(carUsage);
有人知道我做错了什么吗?
最佳答案
尝试使用 JPA/Hibernate 级联:
选择关系的所有者方
汽车 > CarUsage > CarDriver 或 CarDriver > CarUsage > Car。
如果CarDriver是车主端,则映射应该是
@OneToMany(mappedBy="carDriver",cascade = CascadeType.ALL, orphanRemoval = true)
private List<CarUsage> carUsages;
要创建新的 carUsage 关系,您可以创建如下方法:
public void driveCar(CarDriver carDriver, Car car){
CarUsage carUsage = new CarUsage(carDriver, car, Date()....)
carDriver.getCarUsages().add(carUsage);
car.getCarUsages().add(carUsage);// Just to maintain coherence for the rest of the current transaction
...
}
如果您处于事务中,此代码将自动保留 carUsage 实例。 (不再需要 carUsageDao.persist(carUsage))..
关于java - 为什么在持久化 JoinTable 对象时我的 OneToMany 列表没有填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848279/
尝试实现 this question 的解决方案我想知道,在使用 @JoinTable 注释时有什么方法可以使用 WHERE 子句。如果您查看问题(只需跳到表格布局),我会将这两个表格与 USER_I
这是我的示例数据模型 我已经声明了以下类: @Entity({ name: 'user' }) export class User { @Column({ type: 'int4' })
如果一个域类具有复合 id,grails/gorm 似乎会忽略多对多关系连接表上的列名,例如: class Following implements Serializable { ...
我正在尝试使用 JPA 理解 @JoinTable 对 @OneToMany 关系的理解。我有上面的关系: CLIENT public class Client { @Id @Colu
如何使用@JoinTable连接三个表? 我有三个表: user: id, name post: id, date company: id, name 我想创建一个包含以下列的新表: user_id,
使用 JPA/Hibernate 3.6/DB2。 我有以下异常:Caused by: org.hibernate.AnnotationException: SecondaryTable JoinCo
我在hibernate中理解了@joincolumn。现在我开始使用@JoinTable。以下是我的 POJO @Entity @Table(name = "person") public class
我目前正在开发一个有 2 个表的应用程序。用户和团队。用户将 UserId 作为 PK 和 UserPassword。 Team 表将 TeamId 作为 PK 和 TeamName。 最初我只有一个
如何创建高效的 JPA Criteria 查询以仅在连接表中存在实体时选择实体列表?以下面三个表为例: create table user (user_id int, lastname varchar
嗨,我遇到了 JPA 速度慢的问题。使用 jps 映射队列模型、队列快照和事件。 这是我的实体: @Entity @Table(name = "cmEvent") public class Event
我使用的是 MySQL 5.5、JPA 2.0 和 Hibernate 4.1.0.Final。我的实体中有这个字段...... @Entity @Table(name = "teacher",
我在媒体和标签之间有多对多的关系: 中等: @ManyToMany(fetch=FetchType.EAGER) @IndexColumn(name="tags_index_column") @Joi
我正在尝试在 Hibernate 中运行一个简单的 JoinTable 操作,它让我感到不舒服。我有一张表代表一个名为“Person”的实体。我有另一个代表社会安全号码的表(例如)。我希望将社会安全号
我已经阅读了很多文章和文档,并且一定缺少一些内容。 在我的应用程序(下面的模型)中,我遇到了一个数据问题,这似乎超出了我的控制范围,在联接表JOBORDERCATEGORIES中有一个category
我的模型(示例)如下: CREATE TABLE person ( id INT PRIMARY KEY, name TEXT ... ); CREATE TABLE team ( i
我有以下两个实体和一个连接表: 实体: @Entity @Table(name = "PERSON") public class parent { @OneToOne(mappedBy="person
我有一个 Tag 类,它使用 TagStatus 连接表存储对状态集的引用,目前系统中没有它的实体 package com.iit.awt.application.domain; import jav
我正在尝试创建一个调查。该调查由一系列问题组成。每个问题又由答案值的集合组成。 我已将问题与调查联系起来,如下所示: @OneToMany() @JoinTable( name = "
我有 3 个表: 业务角色 标识符 姓名 BusinessRole_ActorType(链接表) 角色标识符 actorType_identifier Actor 类型 标识符 名称(varchar)
我花了几个小时四处搜索,但没有发现任何与我的情况相似的东西。 让我们假设遵循多对多数据模型: Contract (any business entity)- contract_id- other fi
我是一名优秀的程序员,十分优秀!