hibernate 一对一注解

bi如

用户的阅读历史和文章表是单向一对一关系,

阅读历史中通过deviceId外键关联文章表的主键

 

然后,再从getter setter上进行注解

@OneToOne(cascade = CascadeType.DETACH)//引用侧被删除后,被引用测游离,如果要级联删除,那就写其他类型,具体查阅CascadeType
@JoinColumn(name = "articleId", insertable = false, updatable = false)//该字段为外键,用于关联文章表 public Article getArticle() { return article; } public void setArticle(Article article) { this.article = article; }

 

 然后就可以了

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.hs.model;

import java.io.Serializable;
import java.sql.Timestamp;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;

/**
 * 记录用户的文章阅读记录
 *
 * @author G
 */
@Entity
@Table(name = "t_accessRecotd")
public class AccessRecord implements Serializable {

    private int id;
    private int articleId;//访问记录
    private int userid;
    private int deviceId;//设备序列号,安装后生成,卸载重装后变更,以免手机易主情况
    private Timestamp accessTimestamp;//访问时间  
    private Article article;//需要一个文章对象,保存文章的属性
    private boolean isDeleted;//是否删除,标记一下,并不真正删除

    public AccessRecord() {
    }

    @Id
    @GeneratedValue(generator = "_native")
    @GenericGenerator(name = "_native", strategy = "native")
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getArticleId() {
        return articleId;
    }

    public void setArticleId(int articleId) {
        this.articleId = articleId;
    }

    public int getUserid() {
        return userid;
    }

    public void setUserid(int userid) {
        this.userid = userid;
    }

    public int getDeviceId() {
        return deviceId;
    }

    public void setDeviceId(int deviceId) {
        this.deviceId = deviceId;
    }

    public Timestamp getAccessTimestamp() {
        return accessTimestamp;
    }

    public void setAccessTimestamp(Timestamp accessTimestamp) {
        this.accessTimestamp = accessTimestamp;
    }

   

    @OneToOne(cascade = CascadeType.DETACH)
    @JoinColumn(name = "articleId", insertable = false, updatable = false)//该字段为外键,用于关联文章表
    public Article getArticle() {
        return article;
    }

    public void setArticle(Article article) {
        this.article = article;
    }

    public boolean isIsDeleted() {
        return isDeleted;
    }

    public void setIsDeleted(boolean isDeleted) {
        this.isDeleted = isDeleted;
    }
}

 

 

 测试一下

转为json送给前端

 

posted @ 2019-08-19 16:10  不打鱼光晒网  阅读(679)  评论(0)    收藏  举报