Java 如何编写一个通过hibernate插入的泛型类,而不需要任何依赖项

Java 如何编写一个通过hibernate插入的泛型类,而不需要任何依赖项,java,hibernate,generics,Java,Hibernate,Generics,我想创建一个通用类,它接受两个参数Source和Destination class,并将Source对象强制转换为Destination对象,然后将其插入Destination表中。现在我想我必须初始化一个目标对象并将其映射到源对象,然后通过Hibernate插入并提交它。 到目前为止,我已经完成了以下工作。我刚刚试过,根本不知道该做什么,也不知道我是否朝着正确的方向前进 package com.wsx.smap.json; import java.lang.reflect.Field; im

我想创建一个通用类,它接受两个参数Source和Destination class,并将Source对象强制转换为Destination对象,然后将其插入Destination表中。现在我想我必须初始化一个目标对象并将其映射到源对象,然后通过Hibernate插入并提交它。 到目前为止,我已经完成了以下工作。我刚刚试过,根本不知道该做什么,也不知道我是否朝着正确的方向前进

package com.wsx.smap.json;

import java.lang.reflect.Field;
import java.util.List;

import com.wsx.pojo.Pojo;
import com.wsx.smap.model.Pipeline;

public class Sync<S,M> {
Class<S> sType;
Class<M> mType;

public Sync(Class sType, Class mType) {
    super();
    sType = sType;
    mType =mType;

}

public void insert(List<S> sObject){



    Class<S> sObj = (Class<S>) sType.getClass();
    Class<M> mObj=(Class<M>) mType.getClass();

    Field[] sFields = sObj.getDeclaredFields();
    Field[] mFields = mObj.getDeclaredFields();
    Object obj=mObj.newInstance();
    mObj.
    for (Field field : sFields) {
        field.getName();
        field.getGenericType();
    }
    for (Object obj : sObject) {

    }

}
}
package com.wsx.smap.json;
导入java.lang.reflect.Field;
导入java.util.List;
导入com.wsx.pojo.pojo;
导入com.wsx.smap.model.Pipeline;
公共类同步{
类sType;
类mType;
公共同步(sType类、mType类){
超级();
sType=sType;
mType=mType;
}
公共作废插入(列表对象){
类sObj=(类)sType.getClass();
类mObj=(类)mType.getClass();
字段[]sFields=sObj.getDeclaredFields();
字段[]mFields=mObj.getDeclaredFields();
Object obj=mObj.newInstance();
莫布。
用于(字段:sFields){
field.getName();
field.getGenericType();
}
用于(对象对象:sObject){
}
}
}

任何帮助都将不胜感激。首先,感谢一些术语:你写的是“cast”,但实际上你做的是复制

似乎您试图使用反射动态地进行复制。这当然是可能的,但根据我的经验,由于一些需要处理的特殊情况,最终总是比预期的更复杂。因此,我建议如下

  • 检查现有库是否可以执行此任务

  • Viswanath L建议将源序列化为字符串,并将字符串反序列化回目标对象。虽然在我看来这应该是缓慢的,但这绝对是你应该尝试的

  • 如果您真的构建了自己的东西,请特别注意使用干净的代码,包括大量的测试,因为这样的东西很可能需要大量的更改。特别是,这意味着您需要的任何特殊处理都必须在单独的类中进行,因此您可以为某些源类或目标类注册不同的处理程序。这可能还意味着,您需要从源中提取数据并将其写入目标的清晰分离


您能给出具体的输入输出示例吗?如何在不兼容的类之间转换呢?只需将该类转换为
json
,然后解析为其他类。这是最简单的方法。使用GSON