Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 如何在JPA和Hibernate中将数据库生成的列值定义为只读字段?_Java_Hibernate_Jpa_Mariadb_Readonly - Fatal编程技术网

Java 如何在JPA和Hibernate中将数据库生成的列值定义为只读字段?

Java 如何在JPA和Hibernate中将数据库生成的列值定义为只读字段?,java,hibernate,jpa,mariadb,readonly,Java,Hibernate,Jpa,Mariadb,Readonly,使用MariaDB 10.2,可以定义Datetime的默认值,例如created和lastModified 如何作为只读字段访问此列?因为这个值应该只在数据库的控制下,不应该从代码中修改,但是我想在代码中读取这个属性 很简单。只需将insertable和updateable属性设置为false @Column( name = "created_on", insertable = false, updatable = false ) private Timestamp

使用MariaDB 10.2,可以定义Datetime的默认值,例如created和lastModified


如何作为只读字段访问此列?因为这个值应该只在数据库的控制下,不应该从代码中修改,但是我想在代码中读取这个属性

很简单。只需将
insertable
updateable
属性设置为
false

@Column(
    name = "created_on", 
    insertable = false, 
    updatable = false
)
private Timestamp createdOn;
您可以使用:

@Column(updatable=false, insertable=false)
private YourType field;

其中,
@列
用于指定持久属性或字段的映射列。特别是
javax.persistence.Column

谢谢,它很有帮助。但是,当我尝试在默认情况下删除
someobject
时,我在“字段列表”中有一个
java.sql.SQLSyntaxErrorException:未知列“someobject0.somereadonlyfield”(someObjectId)(someObjectId)
方法:
someObjectsRepository.deleteById(someObjectId)
。自定义删除查询帮助了我:
@query(“从someobject中删除,其中id=:someObjectId,nativeQuery=true)
不幸的是,这不会将列从删除查询中排除,因此它不是只读的。@DanielRusev delete用于行,而不是列。行被删除时,列值将消失,无论它们是只读的还是可写的;这与答案或我之前的评论完全无关