问题标签 [jpa-annotations]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 我可以获取新标记为 @Transient 的 JPA 字段的现有数据吗?
我有一个 JPA 列,我准备将其标记为 @Transient。但我确实在那个领域有一些数据,我想稍后移动。
我知道@Transient 不会持续存在。但是,我仍然可以将那些现有数据加载到 Java 世界的内存中吗?
java - MyNotificationService 需要一个找不到的“org.springframework.mail.javamail.JavaMailSender”类型的 bean
我正在从数据库中读取/加载环境变量。因此我没有application.properties。
我收到以下错误消息
java - @Version 注释无法正常工作
我在 Spring Boot 项目中使用 Java Persistence 版本控制来处理乐观并发控制。
我有 3 个模型:流程、惊人和合同。
过程
惊人
合同
现在我想从数据库中检索数据。首先,我调用流程,然后调用惊人的列表和合同。问题是当我调用第二个列表时,进程的版本会增加!
合约回购
惊人的回购
我找不到为什么在没有保存过程的情况下在第二次调用中增加版本的问题?
注意:
我启用了 SQL 日志。记录的所有内容都是选择。
java - 是否可以仅使用 JPA/Hibernate-Annotation 从数据库中检索选定的子列表?
猜猜这可能是一个困难的。好吧,至少对我来说。我需要 JPA/Hibernate-Annotations 方面的帮助,我想知道是否有办法解决我的问题。不幸的是,我自己的技能似乎太有限,无法自己解决这个问题。这就是为什么我希望在这里找到可能对 jpa 注释和关系数据库(这里:oracle)有很好的掌握的人。
任务:
我有三个表(见附图!请不要更改这部分,因为不应该创建表!它们已经以这些名称存在,可能不会更改,主键 + 外键部分只是提供有关我在此处作为图像上传的这些现有表格的更多信息!谢谢。):
如此处所示:表格-图像
Java Bean 看起来像这样:
常量.java
CountryToConstant.java
国家.java
为简洁起见,我省略了所有 getter + setter,除了“children”属性的 constant.java-getter,因为这是此问题所需的唯一 getter。让它变得更加困难:上面显示的java-beans的结构可能不会改变,但允许扩展。这是由于没有破坏已经存在的(非常复杂的)程序结构。
private List children
(Constant.java) 由属性映射private Constant parent
。让我们假设通过另一个程序逻辑,此处使用具有“父”常量 ID(例如 id = {11, 12})的列表来迭代并一个接一个地移交以创建 1 个父对象。结果,这将创建一个private List children
接一个。因此,由于迭代,该示例的结果将是 2 个单独的子列表:
- 父 ID 11 -> 子 ID 列表:{111、112、113、114、115、116}
- 每个父对象的 id 12 -> id-list: {121, 122, 123})。
我需要得到的是一个与表格相对应的特定列表COUNTRY_TO_CONSTANT
,只能通过使用注释来获得。例如:如果此人在德国使用浏览器,则区域设置为de_DE
“ COUNTRY.id
1001”。并且(仅)基于国家代码(而不是语言环境),上面迭代示例的结果(CONSTANT.id
= {11, 12})应该是这两个列表:
- parent-id 11 -> children-id-list: {111, 112, 113}(省略常量 id 114、115 和 116)
- parent-id 12 -> children-id-list: {121}(省略常量 id 122 和 123)
想法是根据国家代码和CONSTANT.ID
表中的 s COUNTRY_TO_CONSTANT
,每个列表都是单独创建的,对应于相关的数据库条目。
由于private List children
无法在定义中更改,我需要的是第二个属性(例如private List children2
),它的工作原理private List children
与唯一的区别是只有与国家相关的子项(COUNTRY_TO_CONSTANT
见表)应该由private Constant parent
.
我在想类似的事情:
或者可能:
这甚至可以通过使用注释来实现吗?
希望,到目前为止,事情已经清楚地解释了。如果没有,我可以在这里使用什么样的解决方法?如果缺少任何信息,请告诉我。
非常感谢。
spring-boot - 在 3 个实体/表上为 @OneToOne 连接找到了多行具有给定标识符的行
Spring Boot 应用程序具有三个实体/表,如 A、B、C,其中实体 A OneToOne 到实体 B,实体 B OneToOne 到实体 C,这里我们从实体 C 获取多条记录,用于 B 到 C 中的 cid 映射由于 cid 有重复记录。有没有办法从表 C 中仅获取单个记录(如第一条或最后一条记录)作为其重复项,因此对于相同的 cid 和相关详细信息是重复的。这里的限制是我们无法控制 DB 以使数据唯一。
A 实体加入 B:@OneToOne
B 实体与 C 连接:
存储库:
出错
org.hibernate.HibernateException:找到了多行具有给定标识符的行:com ...,对于类:
我们如何从该 id 的重复项中获得单行返回?