- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试通过名为 Guardian 的中间类来映射两个用户之间的一些“OneToOne”关系。当我尝试检索用户(及其监护人)时,我收到 Glassfish(开放版 v4.0)返回的内部服务器错误。但是,日志中没有显示任何类型的堆栈跟踪或任何错误。我怀疑问题是我在 JPA 类中的映射。
启动服务器时,我收到两个与 Guardian 类相关的警告,但我不太理解:
警告:映射到元素 [方法 getGuardianUserBean] 上的引用列名称 [GUARDIAN] 与映射引用上的有效 ID 或基本字段/列不对应。将使用所提供的引用列名称。
警告:映射到元素 [方法 getOwnerUserBean] 上的引用列名称 [OWNER] 与映射引用上的有效 ID 或基本字段/列不对应。将使用所提供的引用列名称。
SQL 创建语句:
create table HOMEFREE."user" (
userid integer GENERATED ALWAYS AS IDENTITY,
name varchar(255) not null,
displayname varchar(255) unique not null,
password varchar(255) not null,
tlf integer,
facebookID varchar(255),
googleid varchar(255),
authtoken varchar(255),
email varchar(255) unique not null,
primary key(userid)
);
create table HOMEFREE."guardian" (
guardianId integer GENERATED ALWAYS AS IDENTITY,
owner integer not null,
guardian integer not null,
confirmed boolean not null,
primary key(guardianId),
foreign key(owner) references homeFree."user"(userid),
foreign key(guardian) references homeFree."user"(userid)
);
实体类中的相关字段/注解:
@Entity
@Table(name = "\"user\"", schema = "HOMEFREE")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int userId;
@OneToMany(mappedBy = "ownerUserBean", fetch = FetchType.EAGER)
private List<Guardian> guardians;
}
@Entity
@Table(name="\"guardian\"", schema="HOMEFREE")
public class Guardian implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int guardianId;
@OneToOne
@PrimaryKeyJoinColumn(name="OWNER", referencedColumnName="USERID")
private User ownerUserBean;
@OneToOne
@PrimaryKeyJoinColumn(name="GUARDIAN", referencedColumnName="USERID")
private User guardianUserBean;
private boolean confirmed;
}
最佳答案
尝试使用@JoinColumn
而不是@PrimaryKeyJoinColumn
。
@OneToOne
@JoinColumn(name="OWNER", referencedColumnName="USERID")
private User ownerUserBean;
@OneToOne
@JoinColumn(name="GUARDIAN", referencedColumnName="USERID")
private User guardianUserBean;
根据规范,后者应该用于将 JOINED
映射策略中的实体子类的主表连接到其父类(super class)的主表(确切的定义可用here)
关于java - 包含 OneToOne 映射的映射类 (OneToMany) 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22810041/
使用 Entity entity = hibernateTemplate.get(Entity.class, id); 当我点击 entity.getChild() 这是一个 OneToOne 关系时
我刚开始玩弄 Doctrine ORM 库,我正在学习表之间的所有关联。 所以我坚持单向和双向关系的差异。 据我所知,单向关系只有一侧有主键,那一侧是拥有一侧,对吧?双向关系在两个表中都有主键,因此您
我只用@OneToOne 注释我的字段,当我检查数据库(使用 liquibase 生成)时发现数据库列有唯一约束。 这是否意味着@OneToOne 本身就意味着唯一性,例如。一栋建筑只能在一个城市,其
当我同步我的数据库时,我收到了 的错误module' 对象没有属性 'OneToOnefield' models.py 的代码如下: from django.db import models from
我们想使用不在主表中但在从表中的外键创建单向@OneToOne映射。通过提供以下Java代码,Hibernate尝试在表product_ID中找到product列,但在productimage中找不到
我有以下问题。我有 3 个实体,我正在使用 OneToOne 单向: 实体 1 @Entity public class Entity1 implements Serializable{ @Id
我有 2 个类:User 和 UserPicture,它们具有 1:1 关系。 public class User { @Id @GeneratedValue(strategy=G
考虑以下数据库结构 我需要像这样实现单向一对一映射(结构已简化): @Entity @Table(name = "entity") public class Customer { @Id
我有一个实体:HtmlElement,与实体有以下@OneToOne关系:Component 查询参数实体: @Id @Column(name = "QUERY_PARAMETER_ID") priv
我有两个例子,第一个是@OneToOne单向映射,第二个是双向映射。在单向映射中,拥有方表必须包含引用对方表id的连接列;那么在双向中,它们都必须包含彼此的外键列。但是使用自动生成策略生成数据库模式后
我尝试使用 @OneOnOne 关系创建两个表(主表和辅助表) 。(我使用的是 Postgres ) 我这样定义初级表: Class Table1{ @GeneratedValue @Id @Colu
我想创建一个 @OneToOne 映射,其中根实体通过外键约束引用子实体。 @Entity public class MainEntity { @Id private long id;
我有以下实体: //The class Entity is a @MappedSuperclass with id, audit fields, equals and so on. @Entity p
我创建实体 Developer 和 TalentFile,我希望一个开发人员有一个文件 (Cv),当我设置实体时,我已经提交了 null /** * Developers * * @ORM\Table
我正在使用 play 框架 (v2.3.1),并且我有 2 个模型对象;用户和位置。他们彼此之间存在一对一的关系。保存按预期进行,但是当我想从数据库中检索用户时,该位置为空。 我的类(class):
关系所有者中的双向一对一映射是否需要 unique=true? @Entity public class Customer { @Id @GeneratedValue(strategy
我是 UML 图的新手,想编写下面的代码,其中有一个 OneToOne 双双向关联,带有 JPA 注释。 上下文:有个人和团队。每个团队由人组成,每个人只能属于一个团队。团队总是有一个人充当主要领导者
我正在尝试使用 JPA/Hibernate 设置下表: User: userid - PK name Validation: userid - PK, FK(user) code 可能有很多用户,每个
OneToOne 垂直扩展表字段是很常见的方法, 主表存商品资料, 分表存每个客户对应商品的备注和个性化的价格等等, 本文使用Blazor一步步实现这个简单的需求. 1. 基于 实战 10分
假设我有一个 Person 实体和一个 Animal 实体;一个人可以有两个最喜欢的动物,一个动物只能有一个 人喜欢他们的人(一个人喜欢一种动物使得其他人不再可能喜欢/看到该动物)。它是一个@OneT
我是一名优秀的程序员,十分优秀!