有时,您必须使用本机SQL编写一些查询,而不是休眠HQL。有什么好方法可以避免对表名和字段进行硬编码,并从现有映射中获取此数据?
例如,代替:
String sql = "select user_name from tbl_user where user_id = :id";
Run Code Online (Sandbox Code Playgroud)
就像是:
String sql = "select " + Hibernate.getFieldName("user.name") + " from " + Hibernate.getTableName(User.class) + " where " + Hibernate.getFieldName("user.id") + " = :id";
Run Code Online (Sandbox Code Playgroud)
可以如下所示获取此信息,但是我不确定我是否会在生产代码中执行此操作,除非我确实需要在编译代码后更改表名。否则,拥有代码的可读性确实值得吗?
AbstractEntityPersister metadata =
(AbstractEntityPersister) sessionFactory.getClassMetadata(User.class);
String tableName = metadata.getTableName();
String[] columnNames = metadata.getKeyColumnNames();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2343 次 |
| 最近记录: |