点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在使用JPA和EclipseLink作为提供程序的Java应用程序上工作,我想从那里创建表和存储它们的模式。 创建表可以通过以下方式正常工作:
@Entity @Table(name =" customer") 公共类客户实现Serializable { 私有静态最终长serialVersionUID = 1L; @ID 私人Long ID; 私有字符串firstName; 私有字符串lastName; 公开客户(){ } 公共长getId(){ 返回ID; } 公共无效setId(长ID){ this.id = id; } 公共字符串getFirstName(){ 返回firstName; } 公共无效setFirstName(String firstName){ this.firstName = firstName; } 公共字符串getLastName(){ 返回lastName; } 公共无效setLastName(String lastName){ this.lastName = lastName; } }
此后,将按照我的用户的默认架构中的预期创建表,然后可以使用它们。 当我自己创建一个架构并按以下方式在我的源代码中使用它时,也是有效的:
@Table(name =" customer",schema =" shop")
将按照预期的那样在该架构中创建表,我可以使用它们。 问题是,如果我不自己创建架构并想要执行以下操作:
@Table(name =" customer",schema =" shop")
这里将不会创建任何内容,而不是表而不是架构,并且我希望能够像创建表一样创建架构,这可能吗? 直到现在,我一直在努力使其工作:
1)试图提供目录和架构,问题依然存在,甚至没有创建表。
2)找到了这个问题/问题,并且针对目标数据库使用了不同的值,问题仍然存在,甚至不是表 已创建
3)在Web和github上查找了示例,但在这些示例中仅提供了表名,而不提供模式
所以我希望有人能告诉我这是否可行以及如何实现,直到那之前我已经希望你度过一个愉快的周末。
亲切的问候
Maximilian
马克西米利安,
您是否已阅读本约翰·霍普金斯大学JEE课程上的第16章? p>
如果查看持久性配置,您会发现DDL生成仅与实体相关,而与其他数据库工件(例如Schema)无关。 因此,即使您会找到用于模式生成的设置(例如SCHEMA_GENERATION_CREATE_ACTION),它们也仅用于使用您自己的sql脚本创建表并插入数据-因此,它基本上用您自己的EclipseLink替换了DDL表生成 SQL命令。
该课程说明了如何使用Maven创建/删除/弹出表。 这样可以确保在启动单元测试时,无论应用程序执行什么操作,它都将以一致的方式找到数据库。
但是,对于集成测试和生产环境,应该在部署应用程序(包括模式)之前已经设置了此类数据库构件。
您可以尝试使用一种API来创建 Java中为您提供的模式-但我不鼓励使用它(仅仅是因为它要求您了解方言才能在模式上设置安全性,等等):
上面是在JUnit测试方案中将使用的内容-将创建数据库表,加载数据等-全部在shop模式中。 此示例摘自 EclipseLink Wiki 页面
最好的问候,
伊凡
嗨伊凡,
感谢您分享链接和您对答案的见识。 我猜测这是行不通的,但也许只是配置问题,我想念并想确保不是这种情况。 现在清除了! :)因此,我将自己创建模式,然后在我的JPA-Entites中使用它。 再次感谢您的时间和帮助!
问候
马克西米利安
一周热门 更多>