Mysql 未使用Hibernate/JPA规范化SQL
我必须处理一个无法更改的非规范化数据库。 不规范化是指我有两个表:Mysql 未使用Hibernate/JPA规范化SQL,mysql,sql,hibernate,jpa,Mysql,Sql,Hibernate,Jpa,我必须处理一个无法更改的非规范化数据库。 不规范化是指我有两个表: properties table ---------------- +----+-------+-------+ | id | name | value | |----|-------|-------| | 1 | prop1 | test | | 2 | prop2 | test2 | +----+-------+-------+ 其中名称是唯一的 other table ----------- +----+--
properties table
----------------
+----+-------+-------+
| id | name | value |
|----|-------|-------|
| 1 | prop1 | test |
| 2 | prop2 | test2 |
+----+-------+-------+
其中名称是唯一的
other table
-----------
+----+-----------------------------+-------+
| id | value | other |
|----|-----------------------------|-------|
| 1 | ${prop1}/test | bla |
| 2 | ${prop1}blabla${prop2}/test | bla |
+----+-----------------------------+-------+
所以,正如您在另一个表中看到的,值列基于属性表。因此,值必须是(在末尾)
我知道这很难看,但我别无选择。。。但是我想在我的Java代码中抽象出这个丑陋的东西
我想知道是否有可能创建一个customType来管理这个东西?一种自定义类型,在其中执行另一条SQL语句以计算值字段内的属性并创建新对象,如:
class dynamicField {
private String origin;
private String evaluation;
//GETTER & SETTER
}
还是其他解决方案?(但我认为我们不能用这种丑陋的SQL创造出好东西)
PS:该值必须在DB内保持“未计算”。
PS2:我不能使用AOP,因为实体不是由Spring管理的,所以我无法访问我的服务或EM。我知道可以使用LTW通过AspectJ+@可配置注入,但我真的不想使用它。您使用的是哪种DBMS?博士后?Oracle?MySQL,但必须与Oracle兼容。。。
class dynamicField {
private String origin;
private String evaluation;
//GETTER & SETTER
}