Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未使用@Transient指令在数据库中更新idMoneda属性_Java_Spring Boot - Fatal编程技术网

Java 未使用@Transient指令在数据库中更新idMoneda属性

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 @

我有这个实体,我在其中创建了一个PUT和POST方法,它没有给出错误,但是idMoneda,这是一个用@Transient计算的属性,因为它是moneda的ID(与另一个表有1对1的关系),它不会更新我,当我查看数据库时,它仍然为null,即使在POST请求中我输入了一个值。我不知道这是因为二传手错了,还是因为需要添加一些我现在看不到的东西

@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。现在有两个列