Java 如何编写一个通过hibernate插入的泛型类,而不需要任何依赖项
我想创建一个通用类,它接受两个参数Source和Destination class,并将Source对象强制转换为Destination对象,然后将其插入Destination表中。现在我想我必须初始化一个目标对象并将其映射到源对象,然后通过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
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