Java 在复合键列上映射@OnetoOne
首先,我有两个实体Folder和FolderObjectID及其对应的表 在文件夹表上,我有复合键FolderID和ParentFolderIDJava 在复合键列上映射@OnetoOne,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,首先,我有两个实体Folder和FolderObjectID及其对应的表 在文件夹表上,我有复合键FolderID和ParentFolderID Table Folder +----------------+ | Folder | +----------------+ |#FolderID | |#ParentFolderID | +----------------+ 在FolderObjectID表中,我将FolderObjectID作为主键 Table Fol
Table Folder
+----------------+
| Folder |
+----------------+
|#FolderID |
|#ParentFolderID |
+----------------+
在FolderObjectID表中,我将FolderObjectID作为主键
Table FolderObjectID
+----------------+
| FolderObjectID |
+----------------+
|#FolderObjectID |
+----------------+
文件夹实体
@Entity
@Table(name = "Folder")
public class Folder implements java.io.Serializable {
private FolderId id;
//setter getter
}
@Entity
@Table(name = "Folder")
public class Folder implements java.io.Serializable {
@EmbeddedId
private FolderId id;
@OneToOne
@MapsId("folderId")
private FolderObject folderObject;
}
可嵌入类
@Embeddable
public class FolderId implements java.io.Serializable {
private Integer folderId;
private Integer parentFolderId;
//setter getter
}
FolderObjectID实体
@Entity
@Table(name = "FolderObjectID")
public class FolderObjectID implements java.io.Serializable {
private folderObjectId id;
//setter getter
}
@Entity @Table(name = "FolderObjectID")
public class FolderObjectID implements java.io.Serializable {
@Id
private long folderObjectId;
@OneToOne(mappedBy = "folderObject")
@JoinColumn(name = "folderObjectId")
private Folder folder;
}
现在我想要的是两个实体上的一对一关系,使用Folder表的FolderID列链接FolderObjectID表的FolderObjectID列。不幸的是,我得到一个错误,说我在文件夹实体上有一个损坏的列
有人能在这件事上给我点化一下吗。
谢谢。我想你想使用
@MapsId
功能。
与此类似,但我尚未尝试:
文件夹实体
@Entity
@Table(name = "Folder")
public class Folder implements java.io.Serializable {
private FolderId id;
//setter getter
}
@Entity
@Table(name = "Folder")
public class Folder implements java.io.Serializable {
@EmbeddedId
private FolderId id;
@OneToOne
@MapsId("folderId")
private FolderObject folderObject;
}
FolderObjectID实体
@Entity
@Table(name = "FolderObjectID")
public class FolderObjectID implements java.io.Serializable {
private folderObjectId id;
//setter getter
}
@Entity @Table(name = "FolderObjectID")
public class FolderObjectID implements java.io.Serializable {
@Id
private long folderObjectId;
@OneToOne(mappedBy = "folderObject")
@JoinColumn(name = "folderObjectId")
private Folder folder;
}
FolderObjectID表中的主键是什么?根据你的描述,它应该是折叠的。因此,请先更正表结构,然后重新发布。FolderObjectID是主键。我有folderObjectId作为它的属性。我会试试这个。谢谢。:)很遗憾,@MapsId不可用。我想我用的是较低的版本。