JPA配置实体时 insertable = false, updatable = false

当使用JPA配置实体时,如果有两个属性(一个是一般属性,一个是多对一的属性)映射到数据库的同一列,就会报错。

这时,在多对一的@JoinColumn注解中添加insertable = false, updatable = false就能解决。

例如:

 

/**
 * 用户类
 */
@Entity
@Table(name = "TBL_SYS_USER")
public class SysUser{
    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(name = "USER_ID", unique = true, length = 40)
    @CsvColumn(imported=false)
    private String id;                    //用户ID

    @Column(name = "USER_CODE", nullable = false, length = 40)
    private String userCode;            //用户账号

    @CsvColumn(desc="用户姓名", required= true )
    @Column(name = "USER_NAME", length = 60)
    private String userName;            //用户姓名

    @Column(name = "DEPT_ID", length = 40)
    private String deptId;                //部门ID(IS_ORG=0的)

    @ManyToOne
    @JoinColumn(name = "DEPT_ID", insertable = false, updatable = false, nullable=true)
    private SysOrg dept;                //部门对象

}

我们可以看到,deptId和dept都映射到数据库里面的DEPT_ID字段,但是加上了insertable = false, updatable = false后,在保存数据时,dept不会被保存到数据库。

时间: 2024-10-29 19:07:46

JPA配置实体时 insertable = false, updatable = false的相关文章

insertable = false, updatable = false的使用

转自:insertable = false, updatable = false的使用 当使用JPA配置实体时,如果有两个属性(一个是一般属性,一个是多对一的属性)映射到数据库的同一列,就会报错. 这时,在多对一的@JoinColumn注解中添加insertable = false, updatable = false就能解决. 例如: /** * 用户类 */ @Entity @Table(name = "TBL_SYS_USER") public class SysUser{ @I

JavaPersistenceWithHibernate第二版笔记-第四章-Mapping persistent classes-003映射实体时的可选操作(<delimited-identifiers/>、PhysicalNamingStrategy、PhysicalNamingStrategyStandardImpl、、、)

一.自定义映射的表名 1. 1 @Entity 2 @Table(name = "USERS") 3 public class User implements Serializable { 4 // ... 5 } 2.用定界符 1 //@Table(name = "`USER`")的标准 2 @Table(name = "`USER`") 3 4 //JPA的标准 5 @Table(name = "\"USER\"

hibernate用注解配置实体类的映射

一.注解类 1. @Table 声明了该实体bean映射指定的表(table),目录(catalog)和schema名字 2. @Id 声明了该实体bean的标识属性(对应表中的主键). 3. @Column 声明了属性到列的映射.该注解有如下的属性: name 可选,列名(默认值是属性名) unique 可选,是否在该列上设置唯一约束(默认值false) nullable 可选,是否设置该列的值可以为空(默认值false) insertable 可选,该列是否作为生成的insert语句中的一个

Spring JPA配置讲解

JPA是Java EE5规范之一,是一个orm规范,由厂商来实现该规范.目前有hibernate,OpenJPA,TopLink和EclipseJPA等实现 Spring提供三种方法集成JPA: 1.LocalEntityManagerFactoryBean:适用于那些仅使用JPA进行数据访问的项目.该FactoryBean根据 JPA PersistenceProvider自动检测配置文件进行工作,一般从“META-INF/persistence.xml”读取配置信息.这种方式最简单,但是不能

JPA总结——实体关系映射(一对一@OneToOne)

一对一(@OneToOne) · 单向关联# 注释@OneToOne定义如下:@Target({METHOD, FIELD}) @Retention(RUNTIME)public @interface OneToOne {    Class targetEntity() default void.class;    CascadeType[] cascade() default {};    FetchType fetch() default EAGER;    boolean optional

JPA配置,简单使用以及常见问题

1.引入pom依赖 <!--springboot-JPA--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!--mysql连接--> <dependency> <groupId>m

console.log(([])?true:false); console.log(([]==false?true:false)); console.log(({}==false)?true:false)

下面是题目的类型转换结果: Boolean([]); //true Number([]); //0 Number({}); // NaN Number(false); //0 因此: console.log(([])?true:fasle);// => console.log((true)?true:false); console.log([]==false?true:false); // => console.log(0==0?true:false); console.log(({}==fa

JPA总结——实体关系映射(一对多@OneToMany)

JPA总结——实体关系映射(一对多@OneToMany) 并注明来源: http://blog.sina.com.cn/s/blog_49fd52cf0100scql.html 一对多模型(单向)说明:一个客户对应多个地址,通过客户可以获得该客户的多个地址的信息.客户和地址是一对多的关系,并且客户与地址是单向关联的关系. 映射策略# 外键关联:两个表的关系定义在一个表中:# 表关联:两个表的关系单独定义一个表中通过一个中间表来关联.映射策略——外键关联 表结构如下: 1 TABLE custom

org.hibernate.MappingException: Repeated column in mapping for entity: com.boot.entity.RepEntity column: rep_batch (should be mapped with insert=&quot;false&quot; update=&quot;false&quot;)

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.boot.entity.RepEntity column: rep_batch (should be mapped with insert="false" update="false") at org.hibernate.mapping.PersistentClass.checkColumnDup