@Embeddable
public class UserID implements Serializable {
private static final long serialVersionUID = 1L;
private int ssnID;
private int uniqueNum;
// getters and setters..
}
@Embeddable
public class VehicleID implements Serializable {
private int vehicleID;
private int regNum;
// getters and setters
}
@Entity
public class Vehicle {
@EmbeddedId
private VehicleID vehicleID;
private String description;
// getters and setters..
}
@Entity
public class UserInfo {
private String full_name;
@EmbeddedId
UserID userID;
@OneToOne(cascade=CascadeType.ALL)
@JoinColumns({@JoinColumn(name="vehicle_ID") , @JoinColumn(name="reg_Num")}) // Composite primary key in Vehicle
Vehicle veh;
// getters, setters and other code
}
@OneToOne(cascade=CascadeType.ALL)
@JoinColumns({@JoinColumn(name="vehicle_ID") , @JoinColumn(name="reg_Num")})
Vehicle veh;
现在,当我想使它成为双向关系时,我们需要使用mappedby
属性,这是我无法理解引用什么属性的地方。
@Ent/ity
public class Vehicle {
@EmbeddedId
private VehicleID vehicleID;
private String description;
@OneToOne(mappedBy="UserID")
private UserInfo userInfo;
// getters and setters..
}
我保留了“userid”作为UserInfo的“复合”主键,但它引发了异常:
线程“main”org.hibernate.annotationexception:在:com.example.entity.vehicle.UserInfo中未知的mappedBy,引用的属性未知:com.example.entity.userinfo.userid
有人能帮我弄明白这一点吗?
应该是这样的:
@OneToOne(mappedBy="veh")
private UserInfo userInfo;
mappedby
元素标识关系的反面。这里有Vehicle和UserInfo之间的关系,所以要识别关系的反面,应该使用它的另一面属性。这里veh
。
有关更多信息,请参见
假设我有这些表: 表A在两个字段上有一个复合主键: 员工ID(字符串) 表B也有一个复合主键,但在三个字段上: 员工ID(字符串) 交易ID(Long) 日期(Date) 在表B中,员工ID和事务ID上有一个外键,称为“FK1”(为简单起见)。 由于表A中使用的复合id用于多个映射的Hibernate类,因此我创建了一个可以重用的类: 因此,映射到表A的类如下所示: 映射到表B的类如下所示: 显然
我是一个JPA新手,正在尝试理解@Jointable annotation用于双向、单管关系、B/W项目和任务实体,其中项目可以有多个任务。 我可以将@Jointable与具有@ManyToOne注释的实体一起使用,但当我将@JoinColumn放置在具有@OneToMany的另一个实体上时,我没有在@ManyToOne注释上指定“MappedBy”属性的选项。 我想知道为什么? 我尝试在这两个实
我有实体类用户通过@IdClass注释使用复合键 复合键: 我将Spring数据与hibernate JPA一起使用。因此,我有回购接口: 我想通过具体姓名和姓氏列表从数据库中获取所有活跃用户。例如。我想使用这样的方法 如何通过Spring数据或JPQL查询此需求?
问题内容: 我有两个经审计的实体A和B。实体A拥有实体B的集合(注释为一对多关系)。将A的新实例插入数据库时,A和B的所有行都处于同一修订版(假设修订版1)。然后,对A进行了更新,仅影响实体B的实例。因此,更新后,实体A仍处于修订版1,而实体B处于修订版2(包括审核表中的MOD条目) 。在修订版3中,实体A被删除。因为实体B的集合用@Cascade注释,所以属于A的实体B也被删除。 在这种情况
问题内容: 据我了解,每当我在JPA / Hibernate实体内的Long字段上使用@Id和@GeneratedValue时,我实际上是在使用代理键,考虑到我的非母语,这是定义主键的一种非常不错的方法- 使用复合主键的良好经验,其中: 有不止一种业务-价值-行业组合成为唯一的PK 组合pk值在表详细信息中重复 无法更改该复合PK内的业务价值 我知道休眠可以支持两种类型的PK,但是我以前与有经验的
首先,我的课程: 使用者 角色地图。JAVA 当我尝试在服务器上运行这个我有这样的异常:错误创建bean与名称'SessionFactory'定义在ServletContext资源[/WEB-INF/类/base Beans.xml]:调用init方法失败;嵌套的异常org.hibernate.注释异常:映射通过引用一个未知的目标实体属性:com.patpuc.model.ap.users在com