我正在尝试使某些字段readOnly ->插入并更新,应该不会将该字段发送给DB,但是字段中应该填充select。
来自@ReadOnlyProperty的org.springframework.data.annotation.ReadOnlyProperty并没有做到这一点。
版本:spring: 2.2.0.RC1,spring jdbc: 1.1.0.RELEASE,-data-共用: 2.2.0.RELEASE
db: MSSQL
它应该起作用吗?还有其他的方法吗?
注意:请不要将spring jdbc与spring 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;
}@Test
public 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);
}日志:执行准备好的SQL语句的插入到组织(名称、readOnlyProperty)值(?,?)
将准备好的SQL语句插入到employee (名称、组织)值(?,?)
发布于 2019-10-14 14:11:58
这是个窃听器。我为它创建了DATAJDBC-431,它可能会在下一个服务发行版中修复。
发布于 2019-10-11 12:25:53
我没有测试,但根据这
列注释和XML元素定义了可插入和可更新的选项。这样可以从SQL INSERT或UPDATE语句中省略此列或外键字段。如果表上的约束阻止插入或更新操作,则可以使用这些操作。如果多个属性映射到同一数据库列,例如通过ManyToOne和Id或基本映射使用外键字段,也可以使用它们。将可插入和可更新设置为false,有效地将属性标记为只读。
@Column(name="COLUMN_NAME",updatable=false, insertable=false)
private String fieldName;应该是只读的。
https://stackoverflow.com/questions/58337646
复制相似问题