【问题标题】:How to set value for a OneToOne relationship?如何为 OneToOne 关系设置值?
【发布时间】:2020-09-23 11:39:50
【问题描述】:

我有 2 个模型,定义为一对一。

@Entity
@Table(name = "Form_Item_Production")
public class FormItemProduction {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "item_id", nullable = false)
    private Long itemId;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "shift_lookup_id")
    private AppLookup appLookup;

    getter and setter
}

另一个是查找表

@Entity
@Table(name = "App_Lookup")
public class AppLookup {

    @Id
    @GeneratedValue
    @Column(name = "Lookup_Id", nullable = false)
    private Long lookupId;

    @Column(name = "Lookup_Name", length = 30, nullable = false)
    private String lookupName;

    getter and setter
}

我尝试将值添加到我的数据库中的“shift_lookup_id”到 sysout 打印中,两个表之间的关系正常工作,因为我能够打印出正确的值

for (FormItemProduction x : a) {
    System.out.println("YEAH RIGHT " + x.getAppLookup().getLookupName());
}

由于我只是在数据库中手动添加值,因此我现在尝试从我的 jsp 文件中保存该值,但不完全知道要在输入中写入什么:

 <form:input path="formItemProduction.shiftLookupId" />

这样做不会将 jsp 的值保存到我绑定的模型中。我试图在我的实体中添加一个额外的字段

@Column(name = "shift_lookup_id", nullable = true)
private String shiftLookupId;

但它抛出一个错误

org.hibernate.MappingException: Repeated column in mapping for entity: com.mamee.factory.security.entity.FormItemProduction column: shift_lookup_id (should be mapped with insert="false" update="false")

知道如何在表单中正确编写路径:输入还是我需要更改我的模型?

【问题讨论】:

    标签: spring hibernate jpa spring-data-jpa one-to-one


    【解决方案1】:

    使用这个来修复:

    <form:input path="formItemProduction.appLookup.lookupId" />
    

    能够存储来自 jsp 的值并传递给我的控制器模型

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2018-08-02
      • 1970-01-01
      相关资源
      最近更新 更多