如何在實體類entity新增表中沒有對應的欄位
阿新 • • 發佈:2018-11-13
@Transient表示該屬性並非一個到資料庫表的欄位的對映,ORM框架將忽略該屬性.
如果一個屬性並非資料庫表的欄位對映,務必將其標示為@Transient,否則,ORM框架預設其註解為@Basic
比如現在有實體類Message,但是我想在使用它時想要多用一個欄位來接收未讀訊息的數量 unReadCount,此時只要在欄位前加上@Transient註解就可以了。記住要引入 import javax.persistence.Transient;
@Entity @Table(name = "message") @DynamicUpdate @DynamicInsert @Data public class Message extends BaseEntity { /*接收人id*/ private Long receiveCustomerId; /*傳送人id*/ private Long sendCustomerId; /*標題*/ private String title; /*內容*/ private String content; /*通知資訊*/ private Integer msgType; /*0未讀 1已讀*/ private Integer status; @Transient private Long unReadCount; }
加上註解後,重啟服務時:2018-11-12 17:46:53.130 INFO 972 --- [ restartedMain] o.h.t.h.SchemaUpdate : HHH000228: Running hbm2ddl schema update 就不會改變表結構了。
2018-11-12 17:46:52.151 INFO 972 --- [ restartedMain] o.h.Version : HHH000412: Hibernate Core {5.0.12.Final} 2018-11-12 17:46:52.152 INFO 972 --- [ restartedMain] o.h.c.Environment : HHH000206: hibernate.properties not found 2018-11-12 17:46:52.153 INFO 972 --- [ restartedMain] o.h.c.Environment : HHH000021: Bytecode provider name : javassist 2018-11-12 17:46:52.200 INFO 972 --- [ restartedMain] o.h.a.c.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 2018-11-12 17:46:52.346 INFO 972 --- [ restartedMain] o.h.d.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect 2018-11-12 17:46:53.130 INFO 972 --- [ restartedMain] o.h.t.h.SchemaUpdate : HHH000228: Running hbm2ddl schema update