【问题标题】:Entity with existing table spring data jpa具有现有表弹簧数据 jpa 的实体
【发布时间】:2020-11-11 18:43:02
【问题描述】:

我有一个包含 6 列的现有表。我可以使用自定义列创建实体(仅 2 个)吗?我想以只读模式使用这个实体。

表:

create table ES_USER_GROUPS
(
  group_id NUMBER(9) not null,
  alias    VARCHAR2(200) not null,
  name_es  VARCHAR2(200 CHAR) not null,
  name_lat  VARCHAR2(200 CHAR),
  name_en  VARCHAR2(200 CHAR),
  state    VARCHAR2(1) not null
)

实体:

@Data
@Entity
@Table(name = "es_user_groups")
public class UserGroup {
    private Integer groupId;
    private String alias;
}

【问题讨论】:

    标签: java spring spring-boot hibernate hibernate-mapping


    【解决方案1】:

    是的,你可以。但是您应该将列设置为只读。

    @Data
    @Entity
    @Table(name = "es_user_groups")
    public class UserGroup {
        @Id @Column(insertable=false, updateable=false)
        private Integer groupId;
        @Column(insertable=false, updateable=false)
        private String alias;
    }
    

    【讨论】:

      【解决方案2】:

      最简洁的方法是使用投影,即具有要获取并在存储库中使用的字段的类,不需要额外的映射:

      实体:

      @Data
      public class UserGroupDTO {
          private Integer groupId;
          private String alias;
      }
      

      存储库:

      @Repository 
      public interface UserGroupRepository extends Repository<UserGroup, Integer> {
      
          List<UserGroupDTO> findAll();
      
      }
      

      【讨论】:

      • 谢谢。我可以像使用完整表一样使用关系吗?
      • @qwerty 我不确定,如果不是,界面投影应该可以解决问题。在这里您可以找到有关该主题的更多信息:stackoverflow.com/questions/55371737/…
      • 不,你不能。如果您需要加载图表,请使用我的解决方案
      • 你所说的“图表”是什么意思?想说,我可以不受限制地使用关系吗?
      猜你喜欢
      • 2017-01-04
      • 2014-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      相关资源
      最近更新 更多