一篇文章有多篇的相关文章,有个表ARTICLE,还有个关联表ARTICLE_REL,字段如下:
ARTICLE:id, title, content
ARTICEL_REL:id, article1_id, article1_title, article2_id, article2_title用jpa该怎么标注呢?
ARTICLE:id, title, content
ARTICEL_REL:id, article1_id, article1_title, article2_id, article2_title用jpa该怎么标注呢?
public class Artile {
@Id//主键字段
@Column(name="ColumnName")
private String id;
@Column(name="title")
private String title;
@Column(name="content")
private String content ;
//。。getter、setter略
@OneToMany(cascade = CascadeType.ALL, mappedBy = "gsosApplyInfo")
private List<ArticelRel> articelRel=new ArrayList<ArticelRel>();
}@Entity(name="tableName")
public class Artile {
@Entity(name="ARTICEL_REL")
public class ArtileRel {
@Id
@Column(name="id")
private String id;
@Column(name="id")
private String article1_id;
@Column(name="id")
private String article1_title;
@Column(name="id")
private String article2_id;
@Column(name="id")
private String article2_title ;
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)//其中id关联的article表的id字段
@ManyToOne(cascade=CascadeType.REFRESH,optional = false)
private Artile artile ;
}
@Entity(name="tableName")//tableName是对应的表名
public class Article {
@Id//主键字段
@Column(name="ColumnName")//Column是对应的字段名
private String id;
@Column(name="title")
private String title;
@Column(name="content")
private String content ;
//。。getter、setter略
@OneToMany(cascade = CascadeType.ALL, mappedBy = "article")//一对多关联,也就是ArtileRel中的article属性
private List <ArticelRel> articelRel=new ArrayList <ArticelRel>();
}@Entity(name="ARTICEL_REL")
public class ArtileRel {
@Id
@Column(name="id")
private String id;
@Column(name="id")
private String article1_id;
@Column(name="id")
private String article1_title;
@Column(name="id")
private String article2_id;
@Column(name="id")
private String article2_title ;
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)//其中id关联的article的id属性
@ManyToOne(cascade=CascadeType.REFRESH,optional = false)
private Article article ;
}
我这么认为:
1)首先应该把article1_id作为外键字段,对应Article的id,(其实我主要想知道,怎么让article1_title对应Article中的title,在另外一个帖子发现不行),然后对@JoinColumn(name = "id", referencedColumnName = "id", ..)能解释一下吗,name和referencedColumnName有什么区别?2)我觉得应该把他们作为自身多对多的关系来标注,假设把ARTICLE_REL改成:id, article1_id, article2_id,作为中间表,这样改怎么配???
name=“article1_title”是将数据库表ARTICEL_REL列article1_title用作连接列,referencedColumnName = "title"就是关联表的对应列,也就是对应ARTICLE表的title列
2、不好意思,这个没没配过