![]() |
1
1
这个怎么样:
这使用了Hibernate的一个称为隐式转换的功能。 |
![]() |
2
1
试试这个
|
![]() |
3
0
存储库中的以下查询对我有效:
下面,我插入您在@converter注释中指示使用的枚举类型转换器代码:
我还向枚举中添加了一个类型
下面给出了方法调用及其结果:
|
![]() |
4
0
老实说,您的设计遵循了非常基本的面向对象原则,并且在未来的维护和可扩展性方面存在问题。
你在尝试使用一个超级类
正如其他一些回复所指出的那样,您可以通过使用Hibernate(或其他ORM)提供的功能来实现您想要的。但这个解决方案显然是反模式的,因为它将业务知识泄漏到SQL查询中。 它将您的设计从面向对象转向面向SQL。 我的建议是重构您的模型,其中一个选项是泛化您的课程类,这在您的业务领域似乎是多元的:
下面是演示如何使用Hibernate任意映射来处理泛型类型实体的链接。 https://github.com/zzantozz/testbed/tree/master/hibernate-any (我借用了这个帖子的链接 https://stackoverflow.com/a/7001162/1109002 ) 尽管仍有一些改进空间,但该设计将关注点划分为清晰的边界,并避免将域逻辑泄漏到存储库层。在设计域模型时,如果您必须编写自定义SQL而不是持久性框架提供的默认存储库函数,那么您应该停下来思考模型设计是否有问题。 |
![]() |
Davi Resio · 联系该实体的最佳方式是什么 7 年前 |
![]() |
Damien · 如何判断JPA save方法执行了什么操作 7 年前 |
|
Srinath S · 如何查找spring类的xml文件的属性名? 7 年前 |
![]() |
Kruspe · 具有悲观写锁的可重复读隔离级别 7 年前 |