解决使用导出不同库的实体重名不符合JPA规范问题
作者:互联网
一.导出库对应实体
使用JPA,需要导出数据库对应实体,这样才可以在JPA中使用。
JPA是Hibernate的目前标准,可以用于不同数据库,并可以让工程师脱离数据的实际结构,更专心于业务。
二.导出过程:用Eclipse
可以用IDEA导出JPA实体,但用IDEA导出实体会有shema和数据库标识符,故选择Eclipse作为导出工具。
导出实体方法如下:
- 创建JAVA项目,同时确保Eclipse里装上了JPA工具;
- 右键JAVA项目,选择Propeties。
选择JPA工具。(第一次使用时,会进行属性配置,点击即可)。
- 创建数据库连接:
如果数据库没有连接,则需要建立连接。
建立数据库连接方法可以逐步实现,必要时可以从网上查到相关资料。
- 导出实体。
导出实体过程中,设置主键为auto。
三.不同数据库表同名问题
在不同数据库中,如果表名相同,则导出实体名称相同,这会造成JPA冲突。目前的方法是改名。
笔者写了一个改名程序:
import os
PATH = 'JAVA类路径'
files = os.listdir(PATH)
print(files)
name_arr = []
for f in files:
name = f[:-5]
print(name)
name_arr.append(name)
for f in files:
with open(PATH + '\\' + f, 'r') as fp:
str = fp.read()
for name in name_arr:
str = str.replace(name + ' ', name + 'Extra' + ' ')
str = str.replace(name + '.', name + 'Extra' + '.')
str = str.replace(name + '(', name + 'Extra' + '(')
str = str.replace(name + ')', name + 'Extra' + ')')
with open(PATH + '\\' + f, 'w') as fw:
fw.write(str)
for f in files:
f_newname = f.replace('.java', 'Extra.java')
print(f_newname)
try:
os.rename(PATH + '\\' + f, PATH + '\\' + f_newname)
except:
continue
四.使用数据库实体作为JAR包
导出JAR包在IDEA中执行,因为本次主要开发过程均会在IDEA中。导出JAR包的前提是:要保证总账套和子账套的JAVA程序本身没有问题,即可以正确构建程序。
构建完程序以后,进行导出包。
导出JAR包方法如下:
- 在Project Structure里选择Artifacts,然后,可以点击+号添加,然后选择生成想要的数据包的名字,然后,选择Module Output。
- 选择需要的模块。
- Build Aritifacts生成JAR包。
五.在IDEA中使用JAR包
IDEA使用JAR包方法如下:
- 在Project Structure里选择Module(或项目),加入JAR包。
六.在IDEA中使用新JPA规范
在IDEA中,必须使用新的JPA语法(Hibernate)语法,语法样例如下:
Map<String, String> properties = “已经配置好的properties”;
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpaper", properties);
EntityManager em = emf.createEntityManager();
final CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<A> crit = criteriaBuilder.createQuery(A.class);
Root< A > root = crit.from(A.class);
crit.where();
List lst = em.createQuery(crit).getResultList()
标签:name,JPA,JAR,导出,IDEA,重名,str 来源: https://blog.csdn.net/wangzhezhilu001/article/details/121352862