我将spring boot with JPA用于一个简单的CRUD应用程序。
我有一个对象(ObjectD)
带有一个嵌入的ID(PrimaryKey)
,它有一个通过一对多关系引用两个基本对象(ObjectA和ObjectB)
的ID的复合主键。
但是,我得到一个错误,它说
org.hibernate.AnnotationException:针对未映射的类使用@OneTomany或@ManyTomany:Objecta.PrimaryKeys[PrimaryKey]。
这似乎是一个相当普遍的问题,但我尝试了所有回复中的所有建议,似乎无法突破。如能提供援助,将不胜感激。
我通读了所有类似的问题,尝试了所有的建议,包括:
>
确保注释是javax.persistence.entity,而不是org.hibernate.annotations.entity
将OneToMany侧的mappedBy字段分别更改为PrimaryKey.ObjectA或PrimaryKey.ObjectB
我使用的是Spring boot,所以我没有hibernate.cfg或持久性配置文件。我依靠spring boot jpa来做必要的工作。
我可以启动ApplicationContext的唯一方法是分别删除ObjectA和B上的OneToMany字段。但是我没有对ObjectA和ObjectB中的PrimaryKey的引用。我知道这个问题与一个国家的关系有关,但我不知道如何解决它。
@Entity
public class ObjectA {
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(nullable = false) private Long objectAId;
@OneToMany(mappedBy = "objecta", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
private Set<PrimaryKey> primarykeys = new HashSet<PrimaryKey>();
@Column(nullable = false, unique = true, length = 200) private String name;
//constructor, getters, setters, equals and hashcode left out for brevity
}
@Entity
public class ObjectB {
@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(nullable = false) private Long objectBId;
@Column(nullable = false, unique = true, length = 200) private String name;
@OneToMany(mappedBy = "objectb", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
private Set<PrimaryKey> primaryKeys = new HashSet<PrimaryKey>();
//constructor, getters, setters, equals and hashcode left out for brevity
}
@Embeddable
public class PrimaryKey implements Serializable {
private static final long serialVersionUID = 1L;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name="objectAId")
private ObjectA objectA;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name="objectBId")
private ObjectB objectB;
//constructor, getters, setters, equals and hashcode left out for brevity
}
@Entity
public class ObjectD {
@EmbeddedId private PrimaryKey primaryKey;
@Column(nullable = false, unique = true, length = 200) private String name;
//constructor, getters, setters, equals and hashcode left out for brevity
}
@OneTomany
不能应用于@Embeddable
,只能应用于@Entity
。
换句话说,你不能这样写:
@OneToMany(mappedBy = "objecta", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
private Set<PrimaryKey> primarykeys = new HashSet<PrimaryKey>();
如果它是可嵌入的-嵌入它!
问题内容: 我有一个带有复合键的实体,因此我使用@Embeddable和@EmbeddedId批注。可嵌入类如下所示: 以及使用它的实体: 现在,我想将该实体映射到另一个这样的实体中: 注意 的mappedBy =“id.admin” 是指 管理 字段中 DitaAdminAccountSkillPK 使用 ID 的字段 DitaAdminAccountSkill 。 这样可以编译运行。但是,在e
问题内容: 我正在使用“hibernate注释”找到我的脚,并且遇到了一个问题,希望有人可以提供帮助。 我有2个实体,分别是Section和ScopeTopic。该部分具有List类成员,因此具有一对多关系。运行单元测试时,出现此异常: 使用@OneToMany或@ManyToMany定位未映射的类:com.xxx.domain.Section.scopeTopic [com.xxx.domain
我有一个产品数据库。我已经创建了一个简单的Hibernate项目来从数据库中检索所有的产品。但是,我在编译代码时出现了以下异常: 令人惊讶的是,将prodcuts添加到数据库中可以正常工作。
我一直试图通过一个名为Guardian的中间类映射两个用户之间的一些“OneToOne”关系。当我试图检索一个用户(和他的监护人)时,从Glassfish(Open edition V4.0)返回一个内部服务器错误。但是,日志中没有显示任何类型的堆栈跟踪或任何错误。我怀疑问题是我在JPA类中的映射。 启动服务器时,我得到两个与Guardian类有关的警告,但我并不真正理解: 警告:映射到元素[me
toString()]hibernate:/*插入com.pissolato.api.entitys.sale*/插入到sale(company,created,description,discount,sub_value,type,updated,user,value)值(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
我对容器映射有问题。我需要在key中存储我自己的类Person,但我有错误C2784(即,“编译器无法从提供的函数参数中确定模板参数”)。这是《Ivor Horton的开始:Visual C 2010》一书中的一个例子 错误1错误C2784:“布尔标准::运算符 错误 2 错误 C2784: 'bool std::运算符 错误 3 错误 C2784: '布尔 std::运算符 错误4错误C2784