问题标签 [joincolumn]
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 - 连接列返回空值
我正在尝试使用@JoinColumn
注释加入一列,但我的列总是返回空值,我不知道为什么。
和成分
@JoinColumn(columnDefinition="integer", name = "blender_id")
返回 null 不知道为什么。
java - EntityManager 查询无法解析属性
我正在使用 JPA 查询 OracleSQL 数据库。但是,我收到错误:
当我编写以下查询时
文件有此列
我不确定为什么“客户端”字段似乎链接到“CLIEND_ID”。
hibernate - 如何在休眠中具有复合键的2个表之间进行一对一映射?
我有 2 张表 vanTb 和 vanSiteTb。vanTb 的主键是 vId。vanSiteTb 具有 2 列的复合主键,即。vNum 和 vSiteC。
vanTb 也有 2 列 vNum 和 vSiteC。
这两个表之间存在一对一的关系。
数据库架构来自旧数据库,因此无法更改。
在休眠中,我定义了 2 个实体 bean,即。VanTb.java 和 VanSiteTb.java。
对于 VanSiteTb.java,我使用 @Embeddable 定义了一个新的 java 类。此类的对象在 VanSiteTb.java 中使用 @EmbeddedId 定义。
现在,我想在这两个表之间定义一对一的关系。
所以,
现在要定义一对一的关系,我必须在 JPA 中编写 @OneToOne,但是应该为 @JoinColumn 编写什么,我已经提到了???。
为了从两个表中识别一个唯一条目,我们应该让两个表的 vNum 和 vSite 应该相互匹配。
上面的查询将从两个表中返回一个唯一的行。
请让我知道解决方案。
spring - JPA - 在 API 中传入 ID 后,从共享相同 ForeignKey 的各种实体中检索记录
考虑以下虚拟数据实体及其定义的关系:
实体业务
实体 GiveMoney
实体随机形式
我省略了最后一个实体 personGivingMoney,因为它只包含一个由 person_giving_money_id 和 name 引用的 Id。
请原谅下划线、可能不正确的可插入/可更新值以及通过不必要的@Column 注释浪费空间
自然地,当我在我的控制器中对 List GiveMoney 执行 getAll 时,它会从它们各自的实体中检索一个完整的列表以及连接的列。
这是 GiveMoneyRepo 中的findByBusiness_id
和控制器
正如预期的那样,它会过滤 GiveMoney 列表并返回所有在 api 中保存给定业务 id 的记录,但是它会同时从同一结果集中的 RandomForm 实体和 PersonGivingMoney 实体返回随机记录。我相信这是正常的,因为我刚刚通过 GiveMoney 存储库在 GiveMoney 列表中指定了我的条件,而没有告诉 Spring 如何处理其余的实体/记录。
RandomForm 和 GiveMoney 都将 business_id 作为 ForeignKey,我想在 API 中提供一个业务 id 并检索一个列表,该列表将根据给定的 id 显示来自两个实体的正确记录。简单地说:
FindGiveMoneyByBusiness_Id 和 FindRandomFormByBusiness_id 到一个 JPA 查询和结果集中。
我已经阅读了文档,但显然不够好,因为我确定 Spring JPA 有办法做到这一点,或者我想我可能正在考虑创建一个 nativeQuery?
hibernate - 一对一关系中的休眠抛出错误
我正在尝试实现一对一的映射,下面是所涉及的实体:
充当复合主键的用户 ID:
车辆实体:
以 UserID 作为复合主键并与 Vehicle Entity 具有一对一关系的 UserInfo 实体:
UserInfo
是拥有方实体,因为它具有FK
(使用@JoinColumn)并具有UserID
复合主键。
当我保存UserInfo
对象时,下面是hibernate的sql日志:
休眠:删除表 UserInfo(如果存在)
休眠:删除表车辆(如果存在)
Hibernate: 创建表 UserInfo (ssnID integer not null, full_name varchar(255), VEHICLE_ID integer, primary key (ssnID))
Hibernate: 创建表 Vehicle (vehicleID integer not null, description varchar(255), primary key (vehicleID))
休眠:更改表 UserInfo 添加约束 FK9nx05ha53jhcue5rwks77x0mv 外键 (VEHICLE_ID) 引用车辆
在此之后,它会抛出异常:
我无法理解为什么这会引发异常;我没有插入任何重复的值。
使用@OneToOne 或@JoinColumn 进行映射是否有任何问题?
谁能帮我理解这一点?
编辑:
我创建了一个辅助类来进行实际保存,部分代码片段是:
所以,从 main() 我调用这个辅助方法,并保存实体UserInfo
(它有另一个实体Vehicle
集)。
请注意我没有保存Vehicle
实体,是否需要显式保存?
hibernate - 损坏的列映射:OneToOne 单向与两个连接列
我有两个给定的表(posgres),其中包含以下字段(所有大整数):
交易:
- 交易标识
- reader_id
- 阅读器trxref
- ...
逆转:
- 逆转
- 引用
- 读者ID
- ...
Transaction 和 Reversal 之间有一个可选的 1:1 关系:Transaction 始终存在;如果交易已撤消,则存在撤消。该关系是通过反向组合外键(reader_id,trxref)完成的。这些表是以这种方式给出的,我需要在 JPA 中映射它们。我需要映射交易中的逆转,我可以在命名查询中导航,即SELECT FROM Transaction t LEFT JOIN t.reversal rv ....
所以我要做的是:
在部署期间,我收到以下异常:
谁能指出我的错?我只是试图删除@JoinColumns
并只拥有一个@JoinColumn
. 在这种情况下,我可以部署应用程序 - 这表明这是一个奇怪的错误,我并不感到惊讶,如果它是休眠中的一个错误,即使我认为这不是一个非常奇特的用例。(我们在 Wildfly 10.1.0 中使用 Hibernate 5.2.12)。
编辑澄清了映射是transaction(reader_id, readertrxref)->reversal(readerid, trxref) 并且这是以这种方式给出的。我需要以这种方式映射它,并且我不能使用 transactionid 作为反向的外键,因为它确实(由于技术原因)在此表中不存在。
hibernate - 使用@joincolumns 时父实体引用未保存在子实体中
下面是我写的实体类和方法。当我尝试使用 Spring Data JPA 插入实体时,我正在正确设置所有值并且实体正在保存。但是根据我在实体类中做的休眠映射,元数据实体应该有定义实体的引用。但是保存操作我看到元数据表中的定义引用为空。
java - Nullable JOINCOLUMN 字段瞬态异常 Hibernate
我正在处理spring
hibernate
一个模型具有foreign key
映射的项目,@joincolumn
如下所示。
但是,在通过rest api从angular js UI保存这个实体时,我得到了下面提到的异常。
要求:
为了便于阅读,我还从模型和请求中删除了所有其他字段。
例外:
org.hibernate.TransientObjectException:对象引用了一个未保存的瞬态实例 - 在刷新之前保存瞬态实例:
解决方案是什么,我尝试过使用 hibernate nullable
true 选项。但是没有用!
jpa - JPA:从与当前 as manytoone 链接的表中接收几列
我是 JPA 的新手,需要一些建议。我有两张表,Car 和 Driver 链接为 ManyTyOne。我会获得 Car 实体,其中包含有关几个司机的信息。现在我只能从驱动程序中获取 driver_id,它看起来像这样,但还需要接收驱动程序名称和姓氏。
类车:
表车SQL:
起初,我认为可以通过以下方式接收司机姓名和姓氏:
但是文档说,@JoinColums 仅适用于复合 fk。请给我一个提示,我该怎么做。
java - 使用非主键列的休眠连接
我有两张桌子:
用户:
- user_id(主要)
- ip(唯一)
- ETC ..
services_to_ip
- id(主要)
- 服务标识
- ip
- ETC ..
在课堂用户:
使用 MySQL 查询日志,我们得到类似的结果:
在 WHERE 条件下使用“user_id”字段(默认字段是主键 - users.id)(user_id=777)。
如何指定我需要从用户实体中获取“ip”字段的值,而不是“user_id”?
我将不胜感激任何帮助!