我試圖使某些字段只讀->插入和更新又名save()不應(yīng)將該字段發(fā)送到數(shù)據(jù)庫(kù),但應(yīng)使用select填充該字段。org.springframework.data.annotation.ReadOnlyProperty 中的@ReadOnlyProperty并不能解決問(wèn)題。版本: spring-boot:2.2.0.RC1,spring-data-jdbc:1.1.0.RELEASE,spring-data-commons:2.2.0.RELEASE數(shù)據(jù)庫(kù): MSSQLspring-data-jdbc 只讀它應(yīng)該有效嗎?還有其他方法嗎?注意:請(qǐng)不要將 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: 執(zhí)行準(zhǔn)備好的 SQL 語(yǔ)句 [INSERT INTO Organization (name, readOnlyProperty) VALUES (?, ?)]執(zhí)行準(zhǔn)備好的 SQL 語(yǔ)句 [INSERT INTO 員工 (姓名, 組織) VALUES (?, ?)]
2 回答

大話西游666
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
這是一個(gè)錯(cuò)誤。我為它創(chuàng)建了DATAJDBC-431,它可能會(huì)在下一個(gè)服務(wù)版本中修復(fù)。

慕村9548890
TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
我沒(méi)有測(cè)試,但根據(jù)這個(gè)
Column 注釋和 XML 元素定義可插入和可更新選項(xiàng)。這些允許從 SQL INSERT 或 UPDATE 語(yǔ)句中省略此列或外鍵字段。如果表上的約束阻止插入或更新操作,則可以使用這些。如果多個(gè)屬性映射到同一數(shù)據(jù)庫(kù)列,例如通過(guò) ManyToOne 和 Id 或 Basic 映射使用外鍵字段,也可以使用它們。將 insertable 和 updatetable 設(shè)置為 false,可以有效地將屬性標(biāo)記為只讀。
@Column(name="COLUMN_NAME",updatable=false,?insertable=false) private?String?fieldName;
應(yīng)該使該字段只讀。
添加回答
舉報(bào)
0/150
提交
取消