Java 从一个可序列化对象到另一个可序列化对象的对象值赋值

Java 从一个可序列化对象到另一个可序列化对象的对象值赋值,java,Java,我有两个对象userBO和userEntity。我希望将对象值从userEntity传输到userBO,并要求在传输值时不应丢失序列化。这就是我正在做的。请告诉我这是正确的吗 public static UserBO converUserEntityToUserBO(UserEntity userEntity) { UserBO userBO = new UserBO(); userBO.setUserId(userEntity.getUserId()); userBO.

我有两个对象userBO和userEntity。我希望将对象值从userEntity传输到userBO,并要求在传输值时不应丢失序列化。这就是我正在做的。请告诉我这是正确的吗

public static UserBO converUserEntityToUserBO(UserEntity userEntity) {
    UserBO userBO = new UserBO();
    userBO.setUserId(userEntity.getUserId());
    userBO.setUserFile(userEntity.getUserFile());
    userBO.setUserDepartment(userEntity.getUserDepartment());
    return userBO;
}
UserBO.class

public class UserBO implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 3886993061934034729L;

    private int userId;
    private int departmentId;
    private byte[] userFile;
    private String dbAction;

    //getter and setter 
}
UserEntity.class

@Entity
@Table(name="USER_ENTITY")
public class UserEntity implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = -4676281792392490908L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="USER_ID")
    private int userId;

    @Column(name="USER_DEPARTMENT")
    private String userDepartment;

    @Lob()
    @Column(name="USER_FILE")
    private byte[] userFile;

      //getter and setter

}

您可以使用ApacheBean UTIL执行相同的操作,请参考下面的示例

**在这里,跨两个DTO具有相同名称的属性值将仅从源复制到标记集

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.builder.ToStringBuilder;

public class BeanUtilsCopyPropertiesTest {

    public static void main(String[] args) {

        FromBean fromBean = new FromBean("fromBean", "fromBeanAProp", "fromBeanBProp");
        ToBean toBean = new ToBean("toBean", "toBeanBProp", "toBeanCProp");

        try {
            System.out.println("Copying properties from fromBean to toBean");
            BeanUtils.copyProperties(toBean, fromBean);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        System.out.println(ToStringBuilder.reflectionToString(fromBean));
        System.out.println(ToStringBuilder.reflectionToString(toBean));
    }

}

您可以使用ApacheBean UTIL执行相同的操作,请参考下面的示例

**在这里,跨两个DTO具有相同名称的属性值将仅从源复制到标记集

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.builder.ToStringBuilder;

public class BeanUtilsCopyPropertiesTest {

    public static void main(String[] args) {

        FromBean fromBean = new FromBean("fromBean", "fromBeanAProp", "fromBeanBProp");
        ToBean toBean = new ToBean("toBean", "toBeanBProp", "toBeanCProp");

        try {
            System.out.println("Copying properties from fromBean to toBean");
            BeanUtils.copyProperties(toBean, fromBean);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        System.out.println(ToStringBuilder.reflectionToString(fromBean));
        System.out.println(ToStringBuilder.reflectionToString(toBean));
    }

}

您可以使用ApacheBean UTIL执行相同的操作,请参考下面的示例

**在这里,跨两个DTO具有相同名称的属性值将仅从源复制到标记集

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.builder.ToStringBuilder;

public class BeanUtilsCopyPropertiesTest {

    public static void main(String[] args) {

        FromBean fromBean = new FromBean("fromBean", "fromBeanAProp", "fromBeanBProp");
        ToBean toBean = new ToBean("toBean", "toBeanBProp", "toBeanCProp");

        try {
            System.out.println("Copying properties from fromBean to toBean");
            BeanUtils.copyProperties(toBean, fromBean);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        System.out.println(ToStringBuilder.reflectionToString(fromBean));
        System.out.println(ToStringBuilder.reflectionToString(toBean));
    }

}

您可以使用ApacheBean UTIL执行相同的操作,请参考下面的示例

**在这里,跨两个DTO具有相同名称的属性值将仅从源复制到标记集

import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.builder.ToStringBuilder;

public class BeanUtilsCopyPropertiesTest {

    public static void main(String[] args) {

        FromBean fromBean = new FromBean("fromBean", "fromBeanAProp", "fromBeanBProp");
        ToBean toBean = new ToBean("toBean", "toBeanBProp", "toBeanCProp");

        try {
            System.out.println("Copying properties from fromBean to toBean");
            BeanUtils.copyProperties(toBean, fromBean);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        System.out.println(ToStringBuilder.reflectionToString(fromBean));
        System.out.println(ToStringBuilder.reflectionToString(toBean));
    }

}

由于两个类都有相同的字段,java反射可以帮助您更好地完成这项工作。试试这个

public UserBO loadData (UserEntity userEntity) throws Exception{

    Method[] gettersAndSetters = userEntity.getClass().getMethods();
     UserBO userBO = new UserBO();
    for (int i = 0; i < gettersAndSetters.length; i++) {
            String methodName = gettersAndSetters[i].getName();
            try{
              if(methodName.startsWith("get")){
                 userBO.getClass().getMethod(methodName.replaceFirst("get", "set") ,  
       gettersAndSetters[i].getReturnType() ).invoke(userBO, 
                         gettersAndSetters[i].invoke(userEntity, null));
                    }else if(methodName.startsWith("is") ){
                        userBO.getClass().getMethod(methodName.replaceFirst("is", "set") 
                 ,  gettersAndSetters[i].getReturnType()  ).invoke(userBO, gettersAndSetters[i].invoke(userEntity, null));
                    }

            }catch (NoSuchMethodException e) {

            }catch (IllegalArgumentException e) {

            }

    }

    return null;
}
public UserBO loadData(UserEntity-UserEntity)引发异常{
方法[]gettersAndSetters=userEntity.getClass().getMethods();
UserBO UserBO=new UserBO();
for(int i=0;i
由于两个类都有相同的字段,java反射可以帮助您更好地完成这项工作。试试这个

public UserBO loadData (UserEntity userEntity) throws Exception{

    Method[] gettersAndSetters = userEntity.getClass().getMethods();
     UserBO userBO = new UserBO();
    for (int i = 0; i < gettersAndSetters.length; i++) {
            String methodName = gettersAndSetters[i].getName();
            try{
              if(methodName.startsWith("get")){
                 userBO.getClass().getMethod(methodName.replaceFirst("get", "set") ,  
       gettersAndSetters[i].getReturnType() ).invoke(userBO, 
                         gettersAndSetters[i].invoke(userEntity, null));
                    }else if(methodName.startsWith("is") ){
                        userBO.getClass().getMethod(methodName.replaceFirst("is", "set") 
                 ,  gettersAndSetters[i].getReturnType()  ).invoke(userBO, gettersAndSetters[i].invoke(userEntity, null));
                    }

            }catch (NoSuchMethodException e) {

            }catch (IllegalArgumentException e) {

            }

    }

    return null;
}
public UserBO loadData(UserEntity-UserEntity)引发异常{
方法[]gettersAndSetters=userEntity.getClass().getMethods();
UserBO UserBO=new UserBO();
for(int i=0;i
由于两个类都有相同的字段,java反射可以帮助您更好地完成这项工作。试试这个

public UserBO loadData (UserEntity userEntity) throws Exception{

    Method[] gettersAndSetters = userEntity.getClass().getMethods();
     UserBO userBO = new UserBO();
    for (int i = 0; i < gettersAndSetters.length; i++) {
            String methodName = gettersAndSetters[i].getName();
            try{
              if(methodName.startsWith("get")){
                 userBO.getClass().getMethod(methodName.replaceFirst("get", "set") ,  
       gettersAndSetters[i].getReturnType() ).invoke(userBO, 
                         gettersAndSetters[i].invoke(userEntity, null));
                    }else if(methodName.startsWith("is") ){
                        userBO.getClass().getMethod(methodName.replaceFirst("is", "set") 
                 ,  gettersAndSetters[i].getReturnType()  ).invoke(userBO, gettersAndSetters[i].invoke(userEntity, null));
                    }

            }catch (NoSuchMethodException e) {

            }catch (IllegalArgumentException e) {

            }

    }

    return null;
}
public UserBO loadData(UserEntity-UserEntity)引发异常{
方法[]gettersAndSetters=userEntity.getClass().getMethods();
UserBO UserBO=new UserBO();
for(int i=0;i
由于两个类都有相同的字段,java反射可以帮助您更好地完成这项工作。试试这个

public UserBO loadData (UserEntity userEntity) throws Exception{

    Method[] gettersAndSetters = userEntity.getClass().getMethods();
     UserBO userBO = new UserBO();
    for (int i = 0; i < gettersAndSetters.length; i++) {
            String methodName = gettersAndSetters[i].getName();
            try{
              if(methodName.startsWith("get")){
                 userBO.getClass().getMethod(methodName.replaceFirst("get", "set") ,  
       gettersAndSetters[i].getReturnType() ).invoke(userBO, 
                         gettersAndSetters[i].invoke(userEntity, null));
                    }else if(methodName.startsWith("is") ){
                        userBO.getClass().getMethod(methodName.replaceFirst("is", "set") 
                 ,  gettersAndSetters[i].getReturnType()  ).invoke(userBO, gettersAndSetters[i].invoke(userEntity, null));
                    }

            }catch (NoSuchMethodException e) {

            }catch (IllegalArgumentException e) {

            }

    }

    return null;
}
public UserBO loadData(UserEntity-UserEntity)引发异常{
方法[]gettersAndSetters=userEntity.getClass().getMethods();
UserBO UserBO=new UserBO();
for(int i=0;i
每个可序列化类都有一个与 它是您为
UserBO
UserEntity
类明确指定的:

public class UserBO implements Serializable {
private static final long serialVersionUID = 3886993061934034729L;
...
}
public class UserEntity implements Serializable {
private static final long serialVersionUID = -4676281792392490908L;
...
}
如果未通过声明静态最终长字段显式指定此数字 命名
s