当前位置: 首页 > 知识库问答 >
问题:

@当我从POST方法更新CreationTimestamp列时,它将设置为null

施同
2023-03-14

我试图在我的数据库中设置一个字段来写一行被修改的日期。为此,我使用HiberNate提供的anotations。

当我通过POST方法创建行时,效果很好。它用相同的值(显然)填充两列(创建和修改)。

更新实体(POST)时出现问题。因此,“modified_date”列会更新日期,但“created_date”设置为空。

这是我的EntityBase,由用户实体扩展

@MappedSuperclass
public class EntityBase {

@JsonProperty("_version")
@Column(name="_version")
@Version
private Integer version = 0;

@Column(name= "CREATION_DATE", nullable = false)
@CreationTimestamp
private LocalDateTime createDateTime;

@Column(name= "UPDATED_TIME")
@UpdateTimestamp
private LocalDateTime updateDateTime;

~~ getters & setters ~~

每当我发帖子时,Hibernate似乎在生成的查询中输入空值,这就是@Column中的null属性的原因

这是我的用户实体

@Entity
@Table(name="user")
public class User extends EntityBase {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@JsonProperty("id")
private String id;

@Column(name="NAME")
@JsonProperty("name")
private String name;

@Column(name="SURNAME")
@JsonProperty("surname")
private String surname;

@Column(name="EMAIL")
@JsonProperty("email")
private String email;

@Column(name="PASSWORD")
@JsonProperty("password")
private String password;

//bi-directional many-to-one association to Client
@ManyToOne
@JoinColumn(name="CURRENT_CLIENT_ID")
@JsonProperty("current_client_id")
private Client currentClientId;

@Column(name="INCORPORATION_DATE")
@JsonProperty("incorporation_date")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone="Europe/Madrid")
private LocalDate incorporationDate;

@Column(name="WORKING_TIME_START")
@JsonProperty("working_time_start")
private LocalTime workingTimeStart;

@Column(name="WORKING_TIME_FINISH")
@JsonProperty("working_time_finish")
private LocalTime workingTimeFinish;

@Column(name="MEAL_TIME")
@JsonProperty("meal_time")
private LocalTime mealTime;

我做错什么了?提前谢谢!

共有1个答案

裴卓君
2023-03-14

可以使用以下定义来避免字段被更新:

@Column(name= "CREATION_DATE", nullable = false, updatable = false)
 类似资料:
  • 当我滚动时,我正在使用。当您滚动到底部时,它将更新数据。更新数据后。返回顶部。理想情况下,我希望保留中的职位。我该怎么做呢? InnerClass

  • 问题内容: 是否引用ListView 或列表中选择的特定项目? 问题答案: 相信是指整体。要为项目添加点击处理程序,您想使用AdapterView.setOnItemClickListener。

  • 我在AddServlet中设置了一个属性。java使用请求。setAttribute(),但当我尝试使用请求获取属性时。来自SquareServlet的getAttribute()。如果是Java,则返回null 我使用请求调度转发servlet。 AddServlet。爪哇: 平方ervlet.java: index.jsp: 我使用tomcat 10.0.16和Java11和jakarta.s

  • 当我收到短信时,我正在使用IFTTT更新我的谷歌表格。现在,我想提前一步,写一个谷歌应用脚本,它可以用IFTTT更新的数据做不同的事情。我试图使用Google Apps Script的函数来实现同样的功能,但这不起作用。关于这个问题,我在多个论坛上做了很多搜索,我了解到只有当“用户”对谷歌表格进行更改时才有效,而不是在应用编程接口请求中进行更改时(我相信IFTTT使用相同)。我甚至看不到一个有工作

  • setList在调用setVisible(false)之前从browse窗口调用;ie.当浏览窗口消失时调用此方法。它执行方法中的所有操作,但不在MainMenu公共空号setFileList()中更新它{MainMenu mm=new MainMenu();mm.setlist(java_files);} list_1-jlist listmodel_1=DefaultListModel 我试图

  • 我有一个疑问: 该列是布尔类型。 每当我从前端获取变量时,如下所示: 我传递0和1,然后返回变量,分别得到false和true。所以,我已经验证了我的变量是否正确。但是,当传递到查询时,我的列仅在变量设置为1而不是0时更新,即使我仍然得到true和false。 我通过以下方法解决了这个问题: 相反,让博士后来处理这个问题,但为什么真假不起作用呢? 我在这里查看是为了验证postgres允许true