zoukankan      html  css  js  c++  java
  • JPA实体关联关系,一对一以及转换器

      现有两张表

      room (rid,name,address,floor)

      room_detail (rid,roomid,type)

      需要创建房间实体,但是也要包含type属性

      

    @Data  //lambok生成get,set方法
    @Entity
    @EqualsAndHashCode(callSuper=false, onlyExplicitlyIncluded = true) //此注解会生成equals(Object other) 和 hashCode()方法
    @Table(name="room")
    @SecondaryTable(name="room_detail",pkJoinColumns=@PrimaryKeyJoinColumn(name="roomid"))//关联的表,填写关联字段
    public class RoomEntity implements Serializable{
        
        private static final long serialVersionUID = -7921327682701819877L;
    @Column(nullable
    =false,unique = true) private Long rid;
       private String name;
        private String address;
      
        /**房间类型**/
        @Column(table="room_detail")
        @Convert(converter=RoomTypeConverter.class)
        private RoomType type;
        
    
        /**楼层**/
        @Column(table="room_detail")
        private Integer floor;
        
    }

    @Converter 是JPA的转换器,枚举类型与数据库交互使用,比如房间类型 1代表客房,2代表办公室,数据库是1,2,展示需要客房,办公室,用转换器转

      自己实现接口AttributeConverter ,实现两个方法

    例如

    public class RoomTypeConverter implements AttributeConverter<RoomType, Integer> {
    
        @Override
        public Integer convertToDatabaseColumn(RoomType attribute) {
            // TODO Auto-generated method stub
            return attribute.getCode();
        }
    
        @Override
        public RoomType convertToEntityAttribute(Integer dbData) {
            // TODO Auto-generated method stub
            return RoomTypes.valueOf(dbData);
        }
    
    }

    RoomType是枚举类,就不贴代码了

  • 相关阅读:
    164-268. 丢失的数字
    163-20. 有效的括号
    Sword 30
    Sword 29
    Sword 27
    Sword 25
    Sword 24
    Sword 22
    Sword 21
    Sword 18
  • 原文地址:https://www.cnblogs.com/Cassie-wang/p/9843292.html
Copyright © 2011-2022 走看看