首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在[类Entity.Classification]和[类Entity.Cls_area_map]之间遇到了不兼容的映射

在[类Entity.Classification]和[类Entity.Cls_area_map]之间遇到了不兼容的映射
EN

Stack Overflow用户
提问于 2014-02-04 09:05:53
回答 1查看 3.7K关注 0票数 1

我是JPA的新手,我在创建一些实体时遇到了一些困难。

在我正在构建的应用程序中,可以根据数据库中定义的某个区域和分区对某些实体进行分类。

有关的表格是以下四个表:

1)分类

代码语言:javascript
复制
+-------------+-----------------------+------+-----+---------+----------------+
| Field       | Type                  | Null | Key | Default | Extra          |
+-------------+-----------------------+------+-----+---------+----------------+
| ID          | int(11) unsigned      | NO   | PRI | NULL    | auto_increment |
| pID         | int(11) unsigned      | NO   | MUL | NULL    |                |
| reference   | varchar(300)          | NO   |     | NULL    |                |
| link        | varchar(255)          | YES  |     | NULL    |                |
+-------------+-----------------------+------+-----+---------+----------------+

2) cls_area_map

代码语言:javascript
复制
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| class   | int(11) unsigned | NO   | MUL | NULL    |                |
| idarea  | int(11) unsigned | NO   | MUL | NULL    |                |
| subarea | int(11) unsigned | YES  | MUL | NULL    |                |
| id      | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
+---------+------------------+------+-----+---------+----------------+

3)面积

代码语言:javascript
复制
+--------+------------------+------+-----+---------+----------------+
| Field  | Type             | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| idarea | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| label  | varchar(255)     | NO   | UNI | NULL    |                |
+--------+------------------+------+-----+---------+----------------+

4)分区

代码语言:javascript
复制
+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| area_idarea | int(11) unsigned | NO   | MUL | NULL    |                |
| label       | varchar(255)     | NO   | UNI | NULL    |                |
| ID          | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
+-------------+------------------+------+-----+---------+----------------+

classification中,我存储一般分类信息,在cls_area_map中,我试图将一般信息连接到分类区域(在areasubarea中定义)。

当我试图将分类区域映射信息添加到我的ClassificationCls_area_map实体类时,我会遇到麻烦。

我知道错误:

代码语言:javascript
复制
An incompatible mapping has been encountered between [class Entity.Classification] and [class Entity.Cls_area_map]. This usually occurs when the cardinality of a mapping does not correspond with the cardinality of its backpointer..

我不知道我到底做错了什么。这就是我添加到Classification中以创建这种关系的内容:

代码语言:javascript
复制
@OneToMany(mappedBy = "id")
private List<Cls_area_map> cls_area;

Cls_area_map

代码语言:javascript
复制
@JoinColumn(name = "class",referencedColumnName = "ID")
@ManyToOne(optional=false)
private Classification classy;

有什么解释/暗示吗?

(backpointer是什么意思?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-04 09:19:38

mappedBy表示这一侧的实体与关系相反。因此,应该使用实体名称而不是外键。

医生说

mappedBy引用所有者端关联的属性名称。

它在你的情况下很有品位,所以请使用

代码语言:javascript
复制
@OneToMany(mappedBy = "classy")
private List<Cls_area_map> cls_area;

还请参见:

mappedBy

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21548025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档