问题描述
我有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
}
我尝试将DB中的“ 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")
有什么想法如何正确地以输入形式输入路径?还是需要更改模型?
解决方法
使用以下方法修复:
<form:input path="formItemProduction.appLookup.lookupId" />
能够存储来自jsp的值并传递给我的控制器模型