当前位置: 首页 > 知识库问答 >
问题:

当需要DDL更新以添加新列时,如何更新hibernate实体

谷梁德容
2023-03-14

我使用struts2和hibernate创建了一个应用程序,该应用程序将excel文件上传到数据库中,并执行其他CRUD操作。然而,现在出现了一个更改要求,用户应该能够从UI控制数据库模式,这意味着每当excel文件在数据库中有新列时,用户应该能够通过用户界面动态添加新列。

我不知道如何才能做到这一点,因为更新数据库仍将保持实体类不变。

为了说明这个问题,请考虑以下情况:我有一个员工的ab excel文件,只有两列:姓名和卷号。所以我创建了一个实体类

Class Student{
    int id;
    string name;

    getters and setters
}

使用这个实体类,我可以执行CRUD操作并将excel文件上传到数据库。

现在,如果我需要在excel中有一个新列,上面写着“age”,那么我该怎么办?这个“age”也应该在数据库中创建。必须从用户界面动态添加此新列。

有没有一种方法可以即时更新我的实体,或者有没有其他方法可以实现它。

共有1个答案

丁雅逸
2023-03-14

我的建议是这样做:

Class Student{
    int id;
    string name;
    List<Attribute> attributeList;

    getters and setters
}

Class Attribute {
  int id;
  String key;
  Object value;
}

由于学生与属性之间存在一对一的关系,因此学生中的动态字段应该不会有任何问题。

希望有帮助!

 类似资料:
  • 我正在尝试在现有列表中添加一个新项目,但无法添加。当我调试时,它显示返回为true,但最终新项没有添加到列表中。 我的示例代码如下:雇员雇员1=新雇员(5001,BOB,financeDept.getDepartment_name());雇员雇员2=新雇员(5002,SAM,financeDept.getDepartment_name());雇员雇员3=新雇员(5003,SAM,hrDept.ge

  • 我有一个批处理过程,它正在为一组实体重新计算数据。通过Hibernate从DB获取实体列表: 当流程运行时,某些实体似乎正在分离,导致两种症状: 当尝试获取惰性数据时,我得到一个异常: 在我的第一次尝试中,我试图通过调用inside

  • 问题内容: 我开发了一个使用GoogleMap的应用程序。我刚刚在Eclipse中更新了Android插件(带有Android L库),并重新导入了GooglePlayService库等。 因此,我重新编译后,在手机(4.4.2中的Sony Xperia Z),GenyMotion Emulator(4.4.2),Nexus 7(4.4.2)上都可以正常工作。但是,它不能在两个Samsung Ga

  • 我已经看到了这个答案,并且正在使用它所建议的解决方案,但仍然得到相同的错误。 我有一个对用户表有外键约束的代理表,这是代理表: 这是我的实体: 现在,我想为现有用户添加一个新代理: <代码>\u上下文。SaveChanges() 行引发以下异常: "无法添加或更新子行:外键约束失败(\"dbName\".\"agent\", CONSTRAINT\"FK_Agency_User\"FOREIGN

  • 问题内容: 我是学习Swift的新手,并且正在尝试运行一个非常简单的应用程序。我要做的就是 让UIView.drawRect在我按下按钮时更新 。无论我尝试什么,它都会在应用程序首次加载时更新/绘制,然后再更新/绘制。我已经为此奋斗了几天,但我找不到任何帮助。 我创建: 单视图应用程序 一个按钮,作为操作链接到视图控制器 一个新的类Test_View继承了UIView ViewController

  • 问题内容: 我有本机查询要运行: 出于某种原因,Hibernate选择在执行选择之前进行更新,这确实干扰了我的数据 任何帮助将不胜感激,谢谢 问题答案: 您所描述的正是Hibernate的含义。 执行查询时对持久性上下文(1LC)的任何修改都将在执行查询之前自动清除,以确保数据库返回的结果与内存中修改所缓存的结果匹配。 如果查询将返回您要查看其更新的实体,则您可能应该重新评估您的操作,确保查询在更