我使用以下代码从JPA类
获取数据factory = Persistence.createEntityManagerFactory("abc");
EntityManager entityManager = factory.createEntityManager();
classList.add("pack.Person");
for (Object classOjc : classList) {
String className = classOjc.toString();
Query query = entityManager.createQuery("SELECT p FROM " + className + " p");
@SuppressWarnings("rawtypes")
List resultList = query.getResultList();
System.out.println(resultList.size());
for (Object result : resultList) {
System.out.println(result.toString());
}
}
}
Person [firstName=firstName 1, lastName=lastName 1, bigDecimal=0, myDate=Wed Sep 16 06:42:18 IST 1998],
Person [firstName=firstName 2, lastName=lastName 2, bigDecimal=0, myDate=Sun May 19 13:12:51 IDT 1957],
Person [firstName=firstName 3, lastName=lastName 3, bigDecimal=0, myDate=Fri Jun 03 05:09:20 IDT 1949],
班级是
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private String firstName;
private String lastName;
@Override
public String toString() {
return "Person [firstName=" + firstName + ", lastName=" + lastName +
"]";
....
我的问题是假设覆盖结果如下(给出所有属性和类名), 有办法
因为我覆盖了person类的toString(),所以print就像下面这样,但是我的问题 有没有办法打印例如只是字段名称或只是值(假设我不能更改为字符串,它应该是每个类相同) 问题是我可以任何类,所以我可以将结果转换为例如
答案 0 :(得分:1)
为什么不根据需要添加多个toString方法。或者使用要打印的属性列表编写单个方法。
答案 1 :(得分:1)
您可以在不知道其类型的情况下反映toString
某个Class
。
只需遍历它声明的字段并获取它们的值:
public static String myMagicToString(final Object in) throws IllegalArgumentException, IllegalAccessException {
final StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(in.getClass().getSimpleName()).
append(" [");
for (final Field field : in.getClass().getDeclaredFields()) {
field.setAccessible(true);
stringBuilder.append(field.getName()).
append("=").
append(field.get(in)).
append(",");
}
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
stringBuilder.append("]");
return stringBuilder.toString();
}
此示例打印的格式与您描述的格式相同,但您只需要修改字符串连接,就可以轻松更改格式。