子类Master
父类BaseVo 属性
/**创建时间/
public Date TCreateTime;
/**创建人/
public String CCreateCde;
Master extends BaseVo
利用hibernate hbm2ddl 自动创建表时如何让Master对应的表生成字段 TCreateTime和CCreateCde
子类Master
父类BaseVo 属性
/**创建时间/
public Date TCreateTime;
/**创建人/
public String CCreateCde;
Master extends BaseVo
利用hibernate hbm2ddl 自动创建表时如何让Master对应的表生成字段 TCreateTime和CCreateCde
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在使用Hibernate HBM2DDL(Hibernate Mapping for Data Definition Language)自动创建数据库表功能时,你可以通过设置@Table注解来指定主键、外键等信息。但是,你不能直接控制父类属性的生成。
然而,如果你确实希望在父类的属性上添加一些额外的约束或描述,你可以考虑以下几种方法:
@Column:在父类中定义一个列,并提供相应的注释。@Table(name = "parent_table")
public class ParentClass {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
// 添加其他属性...
}
然后,在子类中使用@JoinColumn注解来引用这个列:
@Table(name="child_table")
@Entity
public class ChildClass extends ParentClass {
@Column(name="additional_column_name", nullable=false, length=50)
private String additionalColumnValue;
// 添加其他属性...
}
这样,即使父类中的这些属性被忽略,它们仍然可以在子类中正确地使用。
@JoinTable:为父类中的每个关联属性创建一个新的JoinTable注解。这将确保所有关联关系都以相同的格式显示在数据库中。@Table(name = "parent_table")
@Entity
public class ParentClass {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@JoinTable(name="parent_child_join",
joinColumns={@JoinColumn(name="parent_id")},
inverseJoinColumns={@JoinColumn(name="child_id")})
private Long childId;
// 添加其他属性...
}
// 子类继承并重写此方法
@Override
protected void onCreate(SQLiteDatabase db) {
super.onCreate(db);
this.childId = new Long(id); // 将id转换为Long类型
}
注意,这种方法仅适用于一对一的关系。对于多对一或多对多的关系,你需要分别为每个关联设置@JoinTable注解。
@EmbeddedId:如果父类有一个嵌套的对象,可以将其作为@Embeddable类型的@EmbeddedId来处理。@Table(name = "parent_table")
@Entity
public class ParentClass {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@EmbeddedId
@Embeddable
private ParentObject parentId;
// 添加其他属性...
}
// 子类继承并重写此方法
@Override
protected void onCreate(SQLiteDatabase db) {
super.onCreate(db);
this.parentId = new ParentObject(id); // 将id转换为ParentObject类型
}
以上就是一种可能的方法,允许你在父类的属性上添加额外的信息,但请注意,这并不影响HBM2DDL自动创建表的功能。