- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用嵌入式注释在 JPA 中建立关系,但我无法成功运行它,
这里我的数据库sql脚本如下,
create table TBL_COLLEGE(
id integer primary key generated always as identity (start with 1000, increment by 5),
name varchar(50)
)
create table TBL_COURSE(
Id integer primary key generated always as identity (start with 10, increment by 1),
college_Id integer references TBL_COLLEGE,
name varchar(50)
)
下面是 JPA 的代码,
@Embeddable
public class Course {
...
...
..
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="ID")
private Integer courseId;
@Column(name="NAME")
private String courseName;
@Column(name="COLLEGE_ID")
private Integer collegeId;
....
// getter and setter
}
这是学院 map ,
@Entity
@Table(name="TBL_COLLEGE")
public class College implements Serializable{
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="ID")
private Integer collegeId;
...
..
@ElementCollection(targetClass=Course.class,fetch= FetchType.LAZY)
@CollectionTable(name="TBL_COURSE",joinColumns=@JoinColumn(name="COLLEGE_ID"))
private Set<Course> course;
..
// getter and setter
}
但是如果我尝试坚持 College with Courses collection set,它给了我一个异常(exception),
ERROR: HCANN000002: An assertion failure occurred (this may indicate a bug in Hibernate)
org.hibernate.annotations.common.AssertionFailure: Declaring class is not found in the inheritance state hierarchy: com.entities.Course
....
..
能否请您告诉我我的方法是否错误,或者我对@CollectionTable 的理解仍然很少,我错了吗
最佳答案
因为你的两个表都有它们自己的 ID
列,Hibernate 会希望它们都是 @Entity
类型。 @Embeddables
没有自己的 ID
。因此,第一步是将 Course
更改为 @Entity
,以及相应的 @TableName
等。
这导致了第二个问题,即Course
对象的集合不应该是一个@ElementCollection
,它应该是一个@OneToMany
。实体集合,使用 @JoinColumn
指定 COLLEGE_ID
将是来自 TBL_COURSE
的外键。
最后,在 College
中有一个 Course
的集合,在 Course
中有一个 College
id , 你暗示你想要一个 bidirectional association .除其他影响外,您不应在 Course
中拥有学院的 ID
。您应该只拥有 College
引用。如果您不需要从 Course
->College
导航,您可能希望暂时删除它,直到您更好地理解 Hibernate 的对象映射。
关于java - 一对多映射中的@ElementCollection @CollectionTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15409048/
我需要覆盖 JPA 中的集合表吗?也许有人有想法 public class nationality{ @Embedded @AttributeOverrides({
我有一个域 Service带收藏tags如下: @Entity public class Service extends AbstractEntity { private st
我正在 Spring RESTfull API 中创建一个 @CollectionTable。我有一个名为大学的实体表。现在我正在创建一个名为 TargetedGift 的实体,其中我将有一个大学 I
简而言之 JPA 文档说 CollectionTable.joinColumns属性是“引用实体主表的集合表的外键列。” 我可以让它不引用实体表的主键列,而是引用另一个具有唯一值的列吗? 详情 有一个
我正在尝试使用嵌入式注释在 JPA 中建立关系,但我无法成功运行它, 这里我的数据库sql脚本如下, create table TBL_COLLEGE( id integer primary k
我必须创建类的层次结构,其中父类(super class)具有表示 map 的 @CollectionTable。我试图实现它,但它只适用于一个子类。 我想做以下事情。我在左边有当前结构,在右边有所需
嗨,有人可以帮我解决这个异常吗?这里我有一个名为 Person 的实体类,并且具有实例变量的 Person 类有 name 和 petnames,这里 petnames 我将其作为简单值类型,数据类型
使用带有collection标签的域Service,如下所示: @Entity public class Service extends AbstractEntity { private st
嗨,有人可以帮我解决这个异常吗?这里我有一个名为 Person 的实体类,并且具有实例变量的 thisclass 有名称和宠物名称,这里的宠物名称我采用了简单的值类型,数据类型是集合,并且具有使用 j
我有一个用 SpringBoot 2 和 MySQL 数据库编写的项目,我正在尝试使用 MongoDB 将其重写为 Spring WebFlux。 有 2 个表:CONTRACT 和 CONTRACT
我尝试审核Order类有 List field 。Order类看起来像这样: class Order { @Audited @ElementCollection(fetch = Fet
您好,我有以下 JPA 实体类。它有两个用于组和联系人 ID 的 @CollectionTable 映射。我很感兴趣从 contact_details 表中获取唯一联系人 ID 的列表,并在下面的 U
尝试使用 CriteriaBuilder 生成动态查询时,Hibernate 没有针对与 @ElementCollection 关联的实体成员变量创建正确的 SQL。 . 示例实体: @Entity
这个问题已经有答案了: How to delete data from org.hibernate.collection.PersistentBag? | Hibernate (Jpa) (1 个回答
假设我有以下实体,它为订阅者建模并使用 CollectionTable 来为订阅列表建模,如下所示: @Entity @Table(name = "SUBSCRIBER") public class
@Entity public class User{ @ElementCollection @Enumerated(EnumType.STRING) @CollectionTa
我有一个非常简单的实体产品,它有代码、名称和标签。标签存储在另一个表 (product_tag) 中,其中包含 product_id 和 tag 列。 我需要使用 CriteriaQuery 搜索带有
我有一个如下所示的实体。它被简化了,因为我无法发布原始代码,但它应该足以理解这个想法。 重点是: 使用 EntityManager 我可以删除 my_table 表中的条目。到目前为止,一切都很好。现
我有以下结构: public class Profile { ... @ElementCollection(targetClass = ProfileFieldImpl.class, fetch
就我而言,我有两个表:父级“VDI_DICT_EMPOYEES_SV”和子级“VDI_DICT_EMPOYEES_RV”由具有相同名称“R_OBJECT_ID”的列连接。 (参见ER图) “父”实体的
我是一名优秀的程序员,十分优秀!