首页 > 解决方案 > 在 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); // 这将在组表中保存一个组

标签: javahibernate

解决方案


难道你只需要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 
}

推荐阅读