gpt4 book ai didi

java - 如何读取hibernate生成的所有表名?

转载 作者:行者123 更新时间:2023-12-02 03:30:14 25 4
gpt4 key购买 nike

我正在使用 hibernate 生成 postgresql 表架构:

@Entity
public class MyEntity {
@Id
private long id;

private String name;
private int age;

@Column(name = "testdate")
private Date thedate;
}

结果我得到:

CREATE TABLE ...

无论@Entity中的字段顺序如何,表字段都是按字母顺序创建的。

当我稍后添加其他字段时,它们通常只是作为数据库中的额外列附加,而不是按字母顺序插入之间。

问题:如何从数据库中按插入顺序读取所有生成的表名称?以及他们生成的架构列名称?这可能吗?

旁注:我仅通过 springs CrudRepository 维护数据。

最佳答案

如果您有 org.hibernate.cfg.Configuration您可以访问PersistentClass es 和 Table es。

public void printTables(Configuration configuration) throws MappingException {  
Iterator classMappingIterator = configuration.getClassMappings();

while(classMappingIterator.hasNext()) {
PersistentClass persistentClass = (PersistentClass)classMappingIterator.next();

Table table = persistentClass.getTable();
String tableName = table.getName();

Iterator columnIterator = table.getColumnIterator();

while(columnIterator.hasNext()){
Column column = (Column) columnIterator.next();
String columnName = column.getName();

System.out.println(tableName + "." + columnName);
}

}
}

在 Spring 中,您可以通过 LocalSessionFactoryBean 获取Configuration

 ApplicationContext appContext = ...;

LocalSessionFactoryBean lsfb = (LocalSessionFactoryBean) appContext.getBean("&sessionFactory");

您必须使用&前缀来获取工厂bean。否则,您将获得工厂创建的 bean。

您可以通过实现ApplicationContextAware在任何其他Spring bean中获取ApplicationContext

关于java - 如何读取hibernate生成的所有表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38201329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com