关于 Transient 注解 的使用

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

关于 @Transient 第一次看到这个注解,于是百度一下.

实体类中使用了@Table注解后,想要添加表中不存在的字段,就要使用@Transient这个注解了。

使用 @Transient 表示该属性并非是一个要映射到数据库表中的字段,只是起辅助作用.ORM框架将会忽略该属性

注解可以加在属性上 也可以加在get()上面

一下只是自己做的简单测试的,还望指正.

使用到的有两个@Transient

javax.persistence.Transient; org.springframework.data.annotation.Transient;

我对这两个都进行了简单的测试

    第一次使用是 org.springframework.data.annotation.Transient 下面的

import org.springframework.data.annotation.Transient; import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table; @Entity@Table(name = "t_student_test_transient")public class Student {     @Id    @GeneratedValue    private Long id;    private String username;    private String password;    private Integer age;     @Transient    public Integer getAge() {        return age;    }     public void setAge(Integer age) {        this.age = age;    }     public Long getId() {        return id;    }     public void setId(Long id) {        this.id = id;    }     public String getUsername() {        return username;    }     public void setUsername(String username) {        this.username = username;    }     @Transient    public String getPassword() {        return password;    }     public void setPassword(String password) {        this.password = password;    }}

结果,字段都自动映射了.   加在属性上面也是一样的效果 数据库字段没有任何改变 @Transient好像没有起作用,我也是菜鸟不懂是因为什么,希望大佬看到能够指出

再使用下javax,persistence下的

import javax.persistence.*; @Entity@Table(name = "t_student_test_transient")public class Student {     @Id    @GeneratedValue    private Long id;    private String username;    private String password;    private Integer age;     @Transient    public Integer getAge() {        return age;    }     public void setAge(Integer age) {        this.age = age;    }     public Long getId() {        return id;    }     public void setId(Long id) {        this.id = id;    }     public String getUsername() {        return username;    }     public void setUsername(String username) {        this.username = username;    }     @Transient    public String getPassword() {        return password;    }     public void setPassword(String password) {        this.password = password;    }}

同样是加在get方法上面,然后看数据库 发现还是没有变化.

这次将注解放在属上上

import javax.persistence.*; @Entity@Table(name = "t_student_test_transient")public class Student {     @Id    @GeneratedValue    private Long id;    private String username;    @Transient    private String password;    @Transient    private Integer age;     public Integer getAge() {        return age;    }     public void setAge(Integer age) {        this.age = age;    }     public Long getId() {        return id;    }     public void setId(Long id) {        this.id = id;    }     public String getUsername() {        return username;    }     public void setUsername(String username) {        this.username = username;    }     public String getPassword() {        return password;    }     public void setPassword(String password) {        this.password = password;    }}

再看数据库,发现 加上@Transient 注解的字段都没有被映射进来. 

所以当想要忽略某个字段的,不让其映射数据库时候 可以使此注解@Transient

点这里可以跳转到人工智能网站

发表评论