java - OneToMany spring 表单问题

标签 java spring hibernate jsp one-to-many

在尝试为 OneToMany 映射创建 Spring 表单时,我收到以下错误

org.springframework.beans.NotReadablePropertyException: Invalid property 'reminder[0].id' of bean class [com.medicine.yourmedics.model.Medication_$$_jvst99a_7]: Field 'reminder[0].id' does not exist

我的 Pojo 药物类(class)是

@Entity
@Table(name = "MEDICATION")
@JsonAutoDetect
public class Medication {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", unique = true, nullable = false)

@OneToMany(mappedBy = "medication")
private List<Reminder> reminder = new ArrayList<Reminder>();

提醒 Pojo 看起来像

public class Reminder {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", unique = true, nullable = false)
private int id;

@ManyToOne
@JoinColumn(name = "medication_id")
private Medication medication;

我已经创建了一个药物表格,我试图在其中访问提醒 ID

<c:forEach items="${medication.reminder}" varStatus="loop">
    <form:input path="reminder[${loop.index}].id" />
</c:forEach>

请大家帮帮我。我很难找出其中的问题。

最佳答案

根据 Java Doc对于@OneToMany...

(Optional) Whether the association should be lazily loaded or must be eagerly fetched. The EAGER strategy is a requirement on the persistence provider runtime that the associated entities must be eagerly fetched. The LAZY strategy is a hint to the persistence provider runtime.

Default: javax.persistence.FetchType.LAZY

尝试@OneToMany(mappedBy = "medication", fetch = FetchType.EAGER)要求hibernate急切地加载列表中的数据而不是提供代理

关于java - OneToMany spring 表单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30412079/

相关文章:

java - 如何使用hibernate将自定义类型的数组从postgres映射到java

java - Retrofit JSON Error 解析错误

java - 使用 TextWatcher 的 EditText 动态掩码(用于血压单位)

java - 操作系统中的进程和线程调度

java - 异步 API 性能更差

java - 找不到部署 "war"的子部署 "ear"中命名的持久性单元

java - 我可以在 JpaRepository nativeQuery 中使用枚举参数吗?

java - 在请求字符串中发送印地文字符时获取垃圾值

java - 在 Spring 拦截器中访问 DWR 发布数据

java - Hibernate/JPA + Derby - SELECT 语句在 GROUP BY、ORDER BY 或选择列表中包含太多项目