我是JPA的新手,我在创建一些实体时遇到了一些困难。
在我正在构建的应用程序中,可以根据数据库中定义的某个区域和分区对某些实体进行分类。
有关的表格是以下四个表:
1)分类
+-------------+-----------------------+------+-----+---------+----------------+
| 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
+---------+------------------+------+-----+---------+----------------+
| 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)面积
+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| idarea | int(11) unsigned | NO | PRI | NULL | auto_increment |
| label | varchar(255) | NO | UNI | NULL | |
+--------+------------------+------+-----+---------+----------------+4)分区
+-------------+------------------+------+-----+---------+----------------+
| 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中,我试图将一般信息连接到分类区域(在area和subarea中定义)。
当我试图将分类区域映射信息添加到我的Classification和Cls_area_map实体类时,我会遇到麻烦。
我知道错误:
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中以创建这种关系的内容:
@OneToMany(mappedBy = "id")
private List<Cls_area_map> cls_area;在Cls_area_map中
@JoinColumn(name = "class",referencedColumnName = "ID")
@ManyToOne(optional=false)
private Classification classy;有什么解释/暗示吗?
(backpointer是什么意思?)
发布于 2014-02-04 09:19:38
mappedBy表示这一侧的实体与关系相反。因此,应该使用实体名称而不是外键。
医生说
mappedBy引用所有者端关联的属性名称。
它在你的情况下很有品位,所以请使用
@OneToMany(mappedBy = "classy")
private List<Cls_area_map> cls_area;还请参见:
mappedBy
https://stackoverflow.com/questions/21548025
复制相似问题