java – Hibernate:按列名设置字段
发布时间:2020-12-15 04:13:31 所属栏目:Java 来源:网络整理
导读:有没有办法在实体中设置一些只包含字段列名称信息的字段? 例如: @Entity@Table(name = "T_PERSON")public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "p_id") private int id; @Column(name = "p_name") private
有没有办法在实体中设置一些只包含字段列名称信息的字段?
例如: @Entity @Table(name = "T_PERSON") public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "p_id") private int id; @Column(name = "p_name") private String name; // getters and setters for id and name } 所以我将p_name和T_PERSON作为输入,我想在其中设置一些值. 我发现this和this使用列名来获取字段名称,我可以使用Reflection来获取setter方法,但是有没有替代反射? 解决方法
我认为你最好的选择只是使用反射. Hibernate内部也使用反射来读取通过注释完成的所有映射.如果你想试试hibernate内部类,那么看一下Hibernate的SessionFactory实现类(org.hibernate.impl.SessionFactoryImpl),它为每个实体保存包含类元数据(org.hibernate.metadata.ClassMetadata)的map.您必须在代码中引用单例SessionFactory.
你可以用它来获取ClassMeta数据 public ClassMetadata getClassMetadata(Class persistentClass) throws HibernateException ClassMetaData中有一些方法可能对你有用.例如, public void setPropertyValue(Object object,String propertyName,Object value,EntityMode entityMode) throws HibernateException; EntityMode可以指定为EntityMode.POJO 此外,如果您有用于初始化hibernate的Configuration对象的引用,则可以查询您感兴趣的表 public Table getTable(String schema,String catalog,String name) { String key = Table.qualify(catalog,schema,name); return tables.get(key); } 并且有方法来获取物理或逻辑列名称 public String getPhysicalColumnName(String logicalName,Table table) throws MappingException 和 public String getLogicalColumnName(String physicalName,Table table) throws MappingException (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读