当前位置: 首页 > 知识库问答 >
问题:

Spring JPA用@JoinColumn保存实体

佴波鸿
2023-03-14

我有两个实体

实体1

    @Entity
    @Table(name = "Table1")
    public class Table1{
    @Id
    @SequenceGenerator(name = "Table1_SEQ", sequenceName = "Table1_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Table1_SEQ")
    @Column(name = "seq", updatable = false, unique = true, insertable = true)
    private Long seq;
    @Column(name = "number", updatable = false, insertable = true)
    private Long number;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "enumber", updatable = false, insertable = true)
    private Table2 table2;

实体2

    @Entity
    @Table(name = "Table2")
    public class Table2 {
    @Id
    @SequenceGenerator(name = "Table2_SEQ", sequenceName = "Table2_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Table2_SEQ")
    @Column(name = "enumber")
    private Long eNumber;
public interface Table1Repository extends JpaRepository<Table1, Long> {

}
Table1Repository rep;
Table1 table1; // Assume this is initialized correctly
rep.save(table1);

我对Jpa不是很熟悉,所以如果您需要对我的问题进行任何澄清,或者您需要任何更多的信息,请告诉我。

共有1个答案

赵经国
2023-03-14
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "enumber", updatable = false, insertable = true)
    private Table2 table2; // THIS IS WRONG!

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "enumber", updatable = false, insertable = true)
    private Long enumberFKTable2; // THIS IS CORRECT!

   //getters and setters
//First, make sure that the foreign key exists!
number enumber = entityManager.getReference(Enumber.class, enumberId);

//test

if(enumber != null){
Table 1 table1 = new Table1();
table1.setEnumber(enumber);
entityManager.persist(table1);
}
 类似资料:
  • 当我调用hibernate save时,我会面临这个异常,我不知道如何解决这个问题。在我的例子中,我将join列从PrimaryKey更改为另一列,因此我面临这个异常。我不想保存客户与承销商和我只想保存外键。 我的域模型是:

  • 我想保存两个实体的差异。旧实体有一个id女巫不是空的。新的id值为null,所以我将它们作为ValueObject进行比较。问题是ValueChange确实保存了差异,但没有保存旧的id。ich如何做到这一点?

  • 问题陈述 我有以下实体: 如果更新,我希望更新对象。例如,我使用我希望对象是id为的对象 更新并使用保存对象,并将当前的对象替换为保存在数据库中的新的对象 失败,因为未从数据库中提取对象 这个也失败了。

  • 我仍然是java和spring的初学者,我已经在mysql中存储了一个名为< code>Offers的表,我试图逐行获取数据< code >其中Status == 0,我的表看起来像这样: 当我尝试运行我的代码时,它的返回 org.springframework.beans.factory。BeanCreationException:创建在类路径资源[org/springframework/boo

  • 我试图创建一个注册用户的功能。 我遵循了这篇文章中的建议:将空作为id保存,并Hibernate,但解决方案对我不起作用。这是我的用户类 这是我的账户类 我的日志显示了以下输出

  • 在使用hibernate和jpa的spring mvc项目中,我有一个实体和一个实体。每个可以有许多,但每个只能有一个。如何为现有的保存新的? 我读过很多关于这个的帖子。如果我试图保存新的,就会出现无法保存分离实体的错误。但如果我试图保存现有的,则不会保存该角色。我读了这篇帖子,建议将hibernate注释移动到getter,但当我这样做时,我会收到一个引用未知属性的hibernate映射错误。这