Hibernate:使用在另一个实体中引用的复合键来面对“ ID的残破列映射”

艾哈迈德·马苏德

我在Hibernate中创建一对一映射时遇到问题。以下是我正在尝试实现的方法。

以下是我对SysEntity的超类

@MappedSuperclass
public class BaseSysEntity {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;

@Column(name="sysupdate")
private Date sysupdate;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public Date getSysupdate() {
    return sysupdate;
}

public void setSysupdate(Date sysupdate) {
    this.sysupdate = sysupdate;
}

}

下一个类是将与“ Project”创建oneToOne关系船的实体

@Entity
@Table(name="sysproject")
public class SysProject extends BaseSysEntity implements Serializable {

@OneToOne(optional=true, fetch= FetchType.LAZY)
@PrimaryKeyJoinColumns({
    @PrimaryKeyJoinColumn(name="sysClientId", referencedColumnName="sysClientId"),
    @PrimaryKeyJoinColumn(name="pProject", referencedColumnName="pProject")
})
private Project project;

public Project getProject() {
    return project;
}

public void setProject(Project project) {
    this.project = project;
}
}

以下是项目类:

@Entity
@Table(name = "tproject")
public class Project {
    @EmbeddedId
    private ProjectID id; // It contains sysClientId and pProject as primary key
    @OneToOne(optional=true, mappedBy="project")
    private SysProject SysProject;

}

ProjectID类别:

@Embeddable
public class ProjectID implements Serializable{

@Column(name="pProject")
private String project;

@Column(name="sysClientId")
private String sysClientId;

public String getProject() {
    return project;
}

public ProjectID(){
    this.sysClientId="0";
}

public ProjectID(Integer number){
    this();
    this.project = number.toString();
}

public void setProject(String project) {
    this.project = project;
}

public String getSysClientId() {
    return sysClientId;
}

public void setSysClientId(String sysClientId) {
    this.sysClientId = sysClientId;
}
}

我得到的异常:

Caused by: org.hibernate.MappingException: broken column mapping for: SysProject.id of: com.spin.integration.dto.Project
at org.hibernate.persister.entity.AbstractPropertyMapping.initPropertyPaths(AbstractPropertyMapping.java:178)
at org.hibernate.persister.entity.AbstractPropertyMapping.initIdentifierPropertyPaths(AbstractPropertyMapping.java:249)
at org.hibernate.persister.entity.AbstractPropertyMapping.initPropertyPaths(AbstractPropertyMapping.java:222)
at org.hibernate.persister.entity.AbstractEntityPersister.initOrdinaryPropertyPaths(AbstractEntityPersister.java:2434)
at org.hibernate.persister.entity.AbstractEntityPersister.initPropertyPaths(AbstractEntityPersister.java:2471)
at org.hibernate.persister.entity.AbstractEntityPersister.postConstruct(AbstractEntityPersister.java:3766)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:451)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163)
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:386)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1790)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
... 18 more

注意:此oneToOne映射在数据库级别不存在(很遗憾,我无法对数据库进行更改)。

融合

您可以检查此解决方案的工作情况:另一个面临相同问题的实体中将引用一个组合键的ID

@OneToOne(optional=true, fetch= FetchType.LAZY)
@JoinColumns({
    @JoinColumn(name="sysClientId", referencedColumnName="sysClientId"),
    @JoinColumn(name="pProject", referencedColumnName="pProject")
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hibernate:使用在另一个实体中引用的复合键来面对“ ID的残破列映射”

来自分类Dev

MySQL如何使用外键来识别另一个表中的列?

来自分类Dev

每个文档的mongodb检索其字段+通过引用在另一个集合中的ID计数

来自分类Dev

Node.js/Bookshelf - 一个表中的多个列引用另一个表的 ID 的映射模型

来自分类Dev

如何使用自动增量ID在JPA中的实体中设置另一个变量

来自分类Dev

使用 angular2 映射 JSON 键并更新另一个 JSON 中的值

来自分类Dev

Postgres-jsonb:更新列中的键,并使用另一个表中的值

来自分类Dev

使用Automapper将一个实体映射到另一个具有属性的实体时出错

来自分类Dev

如何通过检查2列中的值来将1 df的列映射为另一个df

来自分类Dev

如何通过使用另一个表中的不同列的值来显示另一个表中的字段的值

来自分类Dev

需要使用另一个属性的名称将EF实体属性映射到列

来自分类Dev

如何映射键,在另一个字典中查找键?

来自分类Dev

使用awk将文件中的两列映射到另一个文件

来自分类Dev

使用awk将文件中的两列映射到另一个文件

来自分类Dev

如何在实体框架中将列映射到另一个表?

来自分类Dev

PostgreSQL计算列,其中外键引用了另一个表的值

来自分类Dev

将列代码设置为表上的外键,并引用另一个表

来自分类Dev

如何创建引用另一个表中另一列的计算列?

来自分类Dev

使用自动递增的唯一ID主键作为另一个表中的外键

来自分类Dev

如何将Ctrl + Esc映射到autohotkey中的另一个键

来自分类Dev

当一个的键是另一个的ID时,如何从旧数据库中将一个映射到一个关系

来自分类Dev

使用与另一个数据框的匹配来重命名数据框列表中的列

来自分类Dev

使用条件从另一个数据框中更新值来更新pandas数据框列

来自分类Dev

我可以创建另一个只有 2 个字段的实体来映射到同一个表吗

来自分类Dev

使用实体框架将新插入的记录 ID 更新到另一个表

来自分类Dev

使用一个数据框列中的键和另一个数据框列中的值创建字典

来自分类Dev

如果一个键在Java中多次出现,则将一个值作为键,将另一个值作为列表进行映射

来自分类Dev

映射实体和另一个实体彼此不一致

来自分类Dev

R:使用来自另一个数据框的映射在一个数据框中创建一个新列

Related 相关文章

  1. 1

    Hibernate:使用在另一个实体中引用的复合键来面对“ ID的残破列映射”

  2. 2

    MySQL如何使用外键来识别另一个表中的列?

  3. 3

    每个文档的mongodb检索其字段+通过引用在另一个集合中的ID计数

  4. 4

    Node.js/Bookshelf - 一个表中的多个列引用另一个表的 ID 的映射模型

  5. 5

    如何使用自动增量ID在JPA中的实体中设置另一个变量

  6. 6

    使用 angular2 映射 JSON 键并更新另一个 JSON 中的值

  7. 7

    Postgres-jsonb:更新列中的键,并使用另一个表中的值

  8. 8

    使用Automapper将一个实体映射到另一个具有属性的实体时出错

  9. 9

    如何通过检查2列中的值来将1 df的列映射为另一个df

  10. 10

    如何通过使用另一个表中的不同列的值来显示另一个表中的字段的值

  11. 11

    需要使用另一个属性的名称将EF实体属性映射到列

  12. 12

    如何映射键,在另一个字典中查找键?

  13. 13

    使用awk将文件中的两列映射到另一个文件

  14. 14

    使用awk将文件中的两列映射到另一个文件

  15. 15

    如何在实体框架中将列映射到另一个表?

  16. 16

    PostgreSQL计算列,其中外键引用了另一个表的值

  17. 17

    将列代码设置为表上的外键,并引用另一个表

  18. 18

    如何创建引用另一个表中另一列的计算列?

  19. 19

    使用自动递增的唯一ID主键作为另一个表中的外键

  20. 20

    如何将Ctrl + Esc映射到autohotkey中的另一个键

  21. 21

    当一个的键是另一个的ID时,如何从旧数据库中将一个映射到一个关系

  22. 22

    使用与另一个数据框的匹配来重命名数据框列表中的列

  23. 23

    使用条件从另一个数据框中更新值来更新pandas数据框列

  24. 24

    我可以创建另一个只有 2 个字段的实体来映射到同一个表吗

  25. 25

    使用实体框架将新插入的记录 ID 更新到另一个表

  26. 26

    使用一个数据框列中的键和另一个数据框列中的值创建字典

  27. 27

    如果一个键在Java中多次出现,则将一个值作为键,将另一个值作为列表进行映射

  28. 28

    映射实体和另一个实体彼此不一致

  29. 29

    R:使用来自另一个数据框的映射在一个数据框中创建一个新列

热门标签

归档