String entityName = node.attributeValue( "entity-name" );
if ( entityName == null ) entityName = getClassName( node.attribute("name"), mappings );
if ( entityName==null ) {
throw new MappingException( "Unable to determine entity name" );
}
persistentClass.setEntityName( entityName );
private static String getClassName(String unqualifiedName, Mappings model) {
if ( unqualifiedName == null ) return null;
if ( unqualifiedName.indexOf( '.' ) < 0 && model.getDefaultPackage() != null ) {
return model.getDefaultPackage() + '.' + unqualifiedName;
}
return unqualifiedName;
}
public String guessEntityName(Object object) throws HibernateException {
errorIfClosed();
String entity = interceptor.getEntityName( object );
if ( entity == null ) {
if ( object instanceof Map ) {
entity = (String) ( (Map) object ).get( DynamicMapInstantiator.KEY );
if ( entity == null ) {
throw new HibernateException( "could not determine type of dynamic entity" );
}
}
else if ( object instanceof Element ) {
// TODO : really need to keep a map of nodeName -> entityName, but that would mean nodeName being distinct
entity = ( (Element) object ).getName();
}
else {
entity = object.getClass().getName();
}
}
return entity;
}
/**
* Return the names of all persistent (mapped) classes that extend or implement the
* given class or interface, accounting for implicit/explicit polymorphism settings
* and excluding mapped subclasses/joined-subclasses of other classes in the result.
*/
public String[] getImplementors(String className) throws MappingException {
final Class clazz;
try {
clazz = ReflectHelper.classForName(className);
}
catch (ClassNotFoundException cnfe) {
return new String[] { className }; //for a dynamic-class
}
ArrayList results = new ArrayList();
Iterator iter = entityPersisters.values().iterator();
while ( iter.hasNext() ) {
//test this entity to see if we must query it
EntityPersister testPersister = (EntityPersister) iter.next();
if ( testPersister instanceof Queryable ) {
Queryable testQueryable = (Queryable) testPersister;
String testClassName = testQueryable.getEntityName();
boolean isMappedClass = className.equals(testClassName);
if ( testQueryable.isExplicitPolymorphism() ) {
if ( isMappedClass ) {
return new String[] {className}; //NOTE EARLY EXIT
}
}
else {
if (isMappedClass) {
results.add(testClassName);
}
else {
final Class mappedClass = testQueryable.getMappedClass( EntityMode.POJO );
if ( mappedClass!=null && clazz.isAssignableFrom( mappedClass ) ) {
final boolean assignableSuperclass;
if ( testQueryable.isInherited() ) {
Class mappedSuperclass = getEntityPersister( testQueryable.getMappedSuperclass() ).getMappedClass( EntityMode.POJO);
assignableSuperclass = clazz.isAssignableFrom(mappedSuperclass);
}
else {
assignableSuperclass = false;
}
if ( !assignableSuperclass ) {
results.add( testClassName );
}
}
}
}
}
}
return (String[]) results.toArray( new String[ results.size() ] );
}
/**
* 这个方法实际上并不是getClassName,而是getAdaptEntityName
* 它是为了那种偷懒的写法 from A
* 如果都写成from com.A,应该是就不会用到这个方法了。
*/
public String getImportedClassName(String className) {
String result = (String) imports.get(className);
if (result==null) {
try {
ReflectHelper.classForName(className);
return className;
}
catch (ClassNotFoundException cnfe) {
return null;
}
}
else {
return result;
}
}
分享到:
相关推荐
NULL 博文链接:https://zhouxianglh.iteye.com/blog/569471
String entityName = srcfile[i].getName(); //System.out.println(entityName); outf.putNextEntry(new ZipEntry(entityName)); int len; while((len=in.read(buf))>0){ outf.write(buf,0,len); } ...
1. Action建议统一遵守通配符的约定,basePath/web/moduleName/*_ *.action {1} EntityName,{2} ActionMethodName 2. 统一命名规则:接口类似UserService,接口实现类型UserServiceImpl;(IUserService和...
集群结果导入器 导入程序以加载聚类结果
NodeJS模拟服务器 .../:entityName BODY {"key":"value"} 用于创建新实体(根据需要添加任意数量的键值对) 放 /:entityName/:id 用于更新特定实体 删除 /:entityName/:id 用于删除特定实体 筛选结果
JPA注解1、@Entity(name="EntityName")必须,name为可选,对应数据库中一的个表2、@Table(name="",catalog="",schema="")可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息name:...
1、@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2、@Table(name="",catalog="",schema="") 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 name:可...
庐山包装 一套软件包,使开发更容易:) 内容: lushan-export-to-csv 庐山乱弦 lushan-export-to-csv 您可以将存储在Mongo数据库中的记录导出到CSV文件。...EntityName :必需。 您要导出的实体的名称。 这将
正常的返回结果(即ID值)需>=-1,若等于-1,则实体ID没有找到参数:entityName 一个实体名public void gridSimHold(do
JPA注解 1、@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2、@Table(name="",catalog="",schema="") 可选
下方出现的entityName为当前操作的对象名称或者数据库表名称(注意命名规范要符合驼峰命名法,例如:UserOrder或者user_order都可以) 删除接口为物理删除,逻辑删除请使用update接口 根据主键查询对象 @...
1、@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2、@Table(name="",catalog="",schema="") 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 ……
代码如下:/*************************************** * 对象名称: SocketObj * 功能说明: 远程发送与接收 * 试用示例: * using EC; //引用空间名 * string url = “218.75.111.74”;... * SendStr += “entityname:do
oql2json-从Netcool ITNM OQL ANTLR生成的转换器插入JSON 是一个网络建模软件套件。 它使用内部对象查询语言(OQL)数据库,该数据库具有类似SQL的语法,本机...( EntityName, BaseName, EntityType ) values ( "the
require ( './main.js' ) ( "module1:module2:..:moduleN:entityName" ) ; 将订阅提供的单播地址和以下广播地址: * , module1:* , module1:module2:* , module1:module2:...:moduleN:* ; 它将返回具有以下功能...
重新验证器 和简单验证模式服务方法的方便包装器(更不需要将重新验证器和验证模式放在 ./public ... 过滤器 - 是一个对象,它以以下格式存储实体过滤器:{entityName{string}: revalidatorSchema{object}}; validate
可以处理非常复杂的xml,带节点保存,如节点... "entityname": "蓝田局华胥电信营业厅CDMA基站/BTS529", "entityid": "901061314", "model": "HUAWEI BTS3900", "vendorname": "HuaWei" }, "ReturnInfo": "成功" }
class func insertNewObjectForEntityForName ( _ entityName : String , inManagedObjectContext context : NSManagedObjectContext) -> AnyObject例子 // Example// Returns valid Person object in App Target//...