Java 未使用@Transient指令在数据库中更新idMoneda属性
我有这个实体,我在其中创建了一个PUT和POST方法,它没有给出错误,但是idMoneda,这是一个用@Transient计算的属性,因为它是moneda的ID(与另一个表有1对1的关系),它不会更新我,当我查看数据库时,它仍然为null,即使在POST请求中我输入了一个值。我不知道这是因为二传手错了,还是因为需要添加一些我现在看不到的东西Java 未使用@Transient指令在数据库中更新idMoneda属性,java,spring-boot,Java,Spring Boot,我有这个实体,我在其中创建了一个PUT和POST方法,它没有给出错误,但是idMoneda,这是一个用@Transient计算的属性,因为它是moneda的ID(与另一个表有1对1的关系),它不会更新我,当我查看数据库时,它仍然为null,即使在POST请求中我输入了一个值。我不知道这是因为二传手错了,还是因为需要添加一些我现在看不到的东西 @Entity @Table(name = "REMESA") public class Remesa { @Id @
@Entity
@Table(name = "REMESA")
public class Remesa {
@Id
@SequenceGenerator(name = "remesa_sequence", sequenceName = "remesa_sequence", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "remesa_sequence")
@Column(name = "ID")
private Long id;
@OneToOne
@JoinColumn(name = "moneda", nullable = true)
@JsonIgnore
private Moneda moneda;
@Transient
@JsonProperty("moneda")
private Long idMoneda;
public Long getIdMoneda() {
return this.moneda.getId();
}
public void setIdMoneda(Long idMoneda) {
this.idMoneda = idMoneda;
}
}
@Transient
在JPA中表示:不要将此字段保存在DB中。如果名为“moneda_id”的列定义良好,则该列将自动由您的关系生成。Java的transient关键字用于表示字段不被序列化,而JPA的@transient注释用于指示字段不被持久化到数据库中,即,它们的语义不同。因为它们有不同的含义
因此,请尝试删除临时注释并运行代码。是的,我有一个moneda_id列,但当我在进行POST或PUT操作时,不添加或更新,只需在数据库中的moneda_id列中放置一个NULL即可。我这样做了,但现在它生成了一个名为id_moneda的新列,而不是moneda_id。现在有两个列