我試圖使某些字段只讀->插入和更新又名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
提交
取消