Моя цель состоит в том, чтобы иметь возможность вставлять указанный ниже объект, когда пользователь передает соответствующие данные и идентификатор внешнего ключа, и возвращать пользователю полный объект, который также содержит полный объект внешнего ключа, а нетолько идентификатор внешнего ключа.
@Data
@Entity
@EqualsAndHashCode(callSuper = false)
@Table(name = MY_OBJECT_TABLE)
public class MyObject {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "MY_OBJECT_ID", unique = true, nullable = false)
private Integer myObjectId;
@ManyToOne(targetEntity = ForeignObject.class, fetch = FetchType.EAGER)
@JoinColumn(name = "FOREIGN_OBJECT_ID", referencedColumnName = "FOREIGN_OBJECT_ID", nullable = false, insertable = false, updatable = false)
private ForeignObject foreignObject;
@Column(name = "FOREIGN_OBJECT_ID")
private Integer foreignObjectId;
@Column(name = "RANDOM_FIELD", nullable = false)
@NotNull
private Boolean randomField;
}
Я пытался с вышеупомянутым, и он вставляет, но он возвращает только externalObjectId при вставке, а не весь внешний объект.
Я пробовал ниже, чтобызаставить его работать, но не повезло.
@Transactional
public MyObject create(MyObject myObject) {
MyObject createdMyObject = this.myObjectRepository.save(myObject);
return createdMyObject;
}
, а также попытался
@Transactional
public MyObject create(MyObject myObject) {
MyObject createdMyObject = this.myObjectRepository.save(myObject);
return this.myObjectRepository.findById(createdMyObject.getMyObjectId());
}
Я не уверен, есть ли что-то в моем доменном объекте, который мне нужно изменить, или если мне нужночтобы каким-то образом изменить мой метод создания.
Текущий вывод:
{
"myObjectId": 1,
"foreignObject": null,
"foreignObjectId": 3,
"randomField": true
}
Ожидаемый вывод:
{
"myObjectId": 1,
"foreignObject": {
"foreignObjectId": 3,
},
"foreignObjectId": 3, // I don't care if this field stays here or not
"randomField": true
}