我有一个实体:
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table
@DiscriminatorValue("APPEALS")
public class Appeals extends EntityAbstract {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Type(type = "jsonb")
@Column(name = "content", columnDefinition = "jsonb")
private String content;
@Column(name = "guid")
private String guid;
}
@Getter
@Setter
@Entity
@Table(name = "entity_parent")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "DISCRIMINATOR", discriminatorType = DiscriminatorType.STRING)
//@MappedSuperclass
@TypeDefs({@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)})
public abstract class EntityAbstract implements Content {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Version
private Integer version;
}
public interface Content {
String getContent();
void setContent(String content);
}
我使用Spring Data来处理这个问题。我需要从子表(即APPEALS)中进行选择。我这样做是这样,但它不能那样工作:
public interface EntityRepository extends JpaRepository<EntityAbstract, Long> {
@Query("SELECT e FROM EntityAbstract e WHERE TYPE(e) = ?1 AND e.guid = ?2")
<E extends EntityAbstract> E findByContent(final Class<E> e, String content);
}
之后,我将需要使用标准PostgreSql功能在Content字段上进行选择,以搜索jsonb之类的字段。如何在不将content和guid字段传输到AbstractEntity的情况下实现所有这些?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。