我试图使某些字段只读->插入和更新又名save()不应将该字段发送到数据库,但应使用select填充该字段。org.springframework.data.annotation.ReadOnlyProperty 中的@ReadOnlyProperty并不能解决问题。版本: spring-boot:2.2.0.RC1,spring-data-jdbc:1.1.0.RELEASE,spring-data-commons:2.2.0.RELEASE数据库: MSSQLspring-data-jdbc 只读它应该有效吗?还有其他方法吗?注意:请不要将 spring-data-jdbc 与 spring-data-jpa 混合使用import java.util.Set;import org.springframework.data.annotation.Id;import org.springframework.data.annotation.ReadOnlyProperty;import org.springframework.data.relational.core.mapping.Column;import org.springframework.data.relational.core.mapping.MappedCollection;public class Organization { @Id private Long id; private String name; @Column("readOnlyProperty") @ReadOnlyProperty private String readOnlyProperty; @ReadOnlyProperty @MappedCollection private Set<Employee> employees;}import org.springframework.data.annotation.Id;public class Employee { @Id private Long id; private String name;}@Testpublic void insert() { // insert should not set readOnlyProperty Organization organization = new Organization("org1", "readOnly"); Employee employee = new Employee("emp1"); Set<Employee> employess = new HashSet<>(); employess.add(employee); organization.setEmployees(employess); organizationRepository.save(organization);}LOG: 执行准备好的 SQL 语句 [INSERT INTO Organization (name, readOnlyProperty) VALUES (?, ?)]执行准备好的 SQL 语句 [INSERT INTO 员工 (姓名, 组织) VALUES (?, ?)]
2 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
我没有测试,但根据这个
Column 注释和 XML 元素定义可插入和可更新选项。这些允许从 SQL INSERT 或 UPDATE 语句中省略此列或外键字段。如果表上的约束阻止插入或更新操作,则可以使用这些。如果多个属性映射到同一数据库列,例如通过 ManyToOne 和 Id 或 Basic 映射使用外键字段,也可以使用它们。将 insertable 和 updatetable 设置为 false,可以有效地将属性标记为只读。
@Column(name="COLUMN_NAME",updatable=false, insertable=false) private String fieldName;
应该使该字段只读。
添加回答
举报
0/150
提交
取消