package org.zstack.query;
import org.zstack.header.search.Inventory;
import org.zstack.utils.FieldUtils;
import javax.persistence.Id;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
/**
*/
public class QueryUtils {
private static Map<Class, String> primaryKeys = new HashMap<Class, String>();
public static Class getEntityClassFromInventoryClass(Class invClz) {
Inventory at = (Inventory) invClz.getAnnotation(Inventory.class);
return at.mappingVOClass();
}
public static String getPrimaryKeyNameFromEntityClass(Class entityClass) {
String priKey = primaryKeys.get(entityClass);
if (priKey == null) {
Field f = FieldUtils.getAnnotatedField(Id.class, entityClass);
priKey = f.getName();
primaryKeys.put(entityClass, priKey);
}
return priKey;
}
public static String getPrimaryKeyNameFromInventoryClass(Class invClz) {
Class entityClass = getEntityClassFromInventoryClass(invClz);
return getPrimaryKeyNameFromEntityClass(entityClass);
}
}