【发布时间】:2021-01-26 15:31:32
【问题描述】:
我有两个具有这种关系的实体
活动
@Data
@Table(name = "Event", schema = "schema")
public class Event extends Loggable implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
// ....
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.ALL}, fetch = FetchType.EAGER)
List<RecurringPattern> recurringPatterns;
private void setRecurringPatterns(List<RecurringPattern> children) {
this.recurringPatterns = children;
}
public void addRecurringPattern(RecurringPattern child) {
recurringPatterns.add(child);
child.setEvent(this);
}
循环模式
@Data
@Table(name = "RecurringPattern")
public class RecurringPattern implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "eventId") <-- ManyToOne here has caused problems
private Event event;
}
在“一次性”操作中的控制器中,我尝试同时保存 Event 和他的 RecurringPattern 孩子,从 Json 读取数据。
event = new Event();
recurringPattern = new RecurringPattern();
event.GetDataFromJson(...);
recurringPattern.GetDataFromJson(...);
event.addRecurringPattern(recurringPattern);
try {
eventRepository.save(event);
}
catch(Exception e) {
System.out.println(e.getMessage());
}
使用调试器,一切似乎都很好,.save() 方法期间没有抛出异常。
但是我在 Stacktrace 中得到了这种错误:
com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect integer value: '\xAC\xED\x00\x05sr\x00&it.***.checklist.models.calendar.Event\xD9\x09\xD1\x95\xF9\xBF\x05F\x02\x00\x0FL\x00\x09createdByt\x00\x1' for column `schema`.`recurringpattern`.`eventId` at row 1
我真的不明白,是不是和我的注解或者数据库的utf编码有关?
【问题讨论】:
标签: java mysql spring-boot hibernate