当实体类中有枚举类型的属性时,默认情况下自动生成的数据库表中对应的字段类型是枚举的索引值,是数字类型的,若希望数据库中存储的是枚举对应的String类型,在属性上加入@Enumerated(EnumType.STRING)
注解即可。
@Enumerated(EnumType.STRING)
@Column(nullable = true)
private RoleEnum role;
有错误欢迎指出_
注解属性的定义格式:
格式1:数据类型 属性名(); 没有默认值的,使用时必须赋值。
格式2:数据类型 属性名() default 默认值; 有默认值的,使用时如果不赋值就会使用默认值,如果赋值就会覆盖掉默认值。
注解中能够定
@Basic 字段是个隐藏字段,一般都不用加他。因为@Entity里面的字段默认都相当于加上@Basic了,就是要在数据库生成。
但是如果有个字段不需要在数据库生成。那么加上@Transient即可.
(比如实体People和实体IDCard,一个人对应一个身份证号)
@OneToOne(cascade=CAscadeType.ALL)全级联关系
@JoinColumn(name=“pid”,unique=true)被控类的外键写到主控类中,且唯一
注意:保存时应该先保存主表对象,再保存外键对象,这是因为数据库外键约束的原因。删除时则相反,应该先删除该人的身份证号,再删除该人,或者将该人和身份证号一起删除。
2、一对一双向外键
主控方配置不变
被控方添加
@OneToOne(map
* (Optional) Defines whether the value of the field or property should
* be lazily loaded or must be...
JoinTable是中间表表名 joinColumns指定中间表中关联自己ID的字段,inverseJoinColumns表示中间表中关联对方ID的字段,joinColumns是列名
@JoinTable(name = "employee_role",joinColumns = @JoinColumn(name = "employee_id"),
inverseJoinC...
import javax.persistence.Entity;
@SelectBeforeUpdate(value = true) //指明Hibernate从不运行SQL U
The <code>Basic</code> annotation can be applied to a persistent
* property or instance variable of any of the follo...
@JoinColumn与@Column相区别的是:
@JoinColumn注释的是保存表与表之间关系的字段,它要标注在实体属性上。
@Column标注的是表中不包含表关系的字段。
相同点: @Column标记一样,name属性是用来标识表中所对应的字段的名称。例如customer表中存在字段addr_id,标识的代码如下所示。
@OneToOne
@JoinColumn(name = "addr_id")
import com.luxsun.platform.lux.kernel.common.domain.basic.BasePage;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
* @a.
@PostMapping("post_test2")
public Message postTest(@RequestBody QueryConditionsDTO qc) {
return MessageBox.ok(qc);
一、@JoinColumn
@JoinColumn 的作用就是声明关联关系的,什么是关联关系?
就是我们在数据库设计时常说的一对多、多对一、多对多关系。因此,@JoinColumn 必须和这些关系注解一起使用,否则是没有意义的。
二、name 和 referencedColumnName
刚开始接触这两个属性会觉得很难理解,特别是看书的时候总是分不清,看下面的例子:
// Address表对应的Entity
Class Address{
@GeneratedValue(strategy =
@JoinColumn 注解的作用:用来指定与所操作实体或实体集合相关联的数据库表中的列字段。
由于 @OneToOne(一对一)、@OneToMany(一对多)、@ManyToOne(多对一)、@ManyToMany(多对多) 等注解只能确定实体之间几...
在Person中对应到数据库里面就有一个指向Address的外键.
我们也可以增加注释指定外键的列的名字,如下:@OneToOne(cascade=CascadeType.ALL,optional=true)@JoinColumn(name="addressID")//注释本表中指向另一个表的外键。public Address getAddres...
@Column(nullable = false)是用于生成模式的指令。生成的类的数据库列将在实际数据库中标记为不可为空。
@Basic(optional = false)是运行时指令。会在SQL被发送到数据库之前引发一个异常。它所做的主要功能是与延迟加载有关。你不能延迟加载非集合映射的实体,除非你记得设置optional = false(因为Hibernate不知道是否应该有一个代理或null,...