一篇文章有多篇的相关文章,有个表ARTICLE,还有个关联表ARTICLE_REL,字段如下:
ARTICLE:id, title, content
ARTICEL_REL:id, article1_id, article1_title, article2_id, article2_title用jpa该怎么标注呢?

解决方案 »

  1.   

    最近也准备看JPA呢不懂的飘过
      

  2.   

    @Entity(name="tableName")
    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 ;
    }
      

  3.   


    @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 ;
    }
      

  4.   

    to lgq_0714:首先感谢你的回答,按照你的思路,是把它们写成1对多的关系,但我不明白你对ArtileRel的标注。
    我这么认为:
    1)首先应该把article1_id作为外键字段,对应Article的id,(其实我主要想知道,怎么让article1_title对应Article中的title,在另外一个帖子发现不行),然后对@JoinColumn(name = "id", referencedColumnName = "id", ..)能解释一下吗,name和referencedColumnName有什么区别?2)我觉得应该把他们作为自身多对多的关系来标注,假设把ARTICLE_REL改成:id, article1_id, article2_id,作为中间表,这样改怎么配???
      

  5.   

    1、让article1_title对应Article中的title:@JoinColumn(name = "article1_title", referencedColumnName = "title", ..)
    name=“article1_title”是将数据库表ARTICEL_REL列article1_title用作连接列,referencedColumnName = "title"就是关联表的对应列,也就是对应ARTICLE表的title列
    2、不好意思,这个没没配过