定义JPA(Hibernate)实体

时间:2017-04-25 09:09:40

标签: hibernate jpa

我有两个数据库表

代码

CREATE TABLE `tags` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `tags` varchar(255) NOT NULL,
 `tag_entity` varchar(255) NOT NULL,
 `description` varchar(255) NOT NULL,
 `status` enum('live','deleted') NOT NULL DEFAULT 'live',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

tags_parent

CREATE TABLE `tags_parent` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `tag_id` int(11) NOT NULL,
 `parent_id` int(11) NOT NULL,
 `status` enum('live','deleted') NOT NULL DEFAULT 'live',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

在tags_parent中,tag_id和amp; parent_id是标签表的ID。 一个标签可以有多个父/多子。

如何定义JPA实体?

我正在尝试这样的事情,但我无法更好地想象:

@Entity
@Table(name="tags")
public class Tag implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private int id;

    private String description;

    @Column(name="main_id")
    private int mainId;

    private String status;

    @Column(name="tag_entity")
    private String tagEntity;

    @Column(name="tag_quality_score")
    private float tagQualityScore;

    @OneToMany(cascade=CascadeType.ALL)
    @JoinTable(name="tags_parent",
    joinColumns={@JoinColumn(name="tag_id", referencedColumnName="id", insertable=false,updatable=false)},
    inverseJoinColumns={@JoinColumn(name="tag_id", referencedColumnName="id", insertable=false,updatable=false)})
    private List<Tag> tag;

}

0 个答案:

没有答案