java - 在 Java 中动态创建变量的新实例
问题描述
我有两个类,我需要使用休眠执行相同的操作。
@Entity
@Table(name="users")
class User {
@Id
public int id;
String user;
//etc...
}
@Entity
@Table(name="groups")
class Group {
@Id
public int id;
String group_name;
//etc...
}
我有一个休眠类来保存数据
public Hibernate {
public static void save(User user) {
Session session = ... opne my session
Transaction tx = session.beginTransaction();
// save
session.save(user);
tx.commit();
session.close();
}
}
现在我想保存组但我想使用相同的功能但我不能通过组
我试图通过
public static void save(Class myClass) {
但是后来我遇到了一些错误如何动态传递一个类以便它工作?
所以我的代码将是:
用户 user = new User().... Hibernate.save(user); // 这将在用户表中保存一个用户
Group group = new Group().... Hibernate.save(group); // 这将在组表中保存一个组
解决方案
难道你只需要public static void save(User user)
替换public static void save(Object object)
边注:
此外,如果您不想将每个对象都传递给持久化,那么您可以让您的实体实现一个标记接口,并在save
.
像这样的东西:
@Override
public <T extends Base> T find(Class<T> baseClass, Long id) {
if (baseClass == null || id == null) {
throw new DaoLevelException("Entity class or id cannot be null");
}
// code for finding with id
}
@Override
public void save(Base base) {
if (base == null) {
throw new DaoLevelException("object passed for saving cannot be null");
}
// code for persist
}
推荐阅读
- node.js - Clear-Site-Data HTTP 标头只是一个提示吗?
- flutter - 为什么这会显示在应用程序中?是下拉按钮的问题吗?
- c# - 多个组件在 blazor 中使用相同的标签
- html - 从没有 javascript 的 CSS 更改 SVG viewBox 大小
- python - 如何检测反应?
- flutter - 将 Whatsapp 业务 API 与 Flutter 应用程序集成
- python - python新手,刚刚遇到一个新错误:pygame.error: video system not initialized
- postgresql - 通过 pgAdmin 的“字符变化”和“字符变化 []”之间的 PostgreSQL 区别
- javascript - react native 中的嵌套列表组件
- excel - 如何在excel中将同一组中的表格中的损益组合在一起?