如何为不同的方法选择特定的列?

Posted

技术标签:

【中文标题】如何为不同的方法选择特定的列?【英文标题】:how to select specific columns for different methods? 【发布时间】:2019-10-03 07:08:33 【问题描述】:

我想从实体类中选择特定列而忽略方法中的其他列。为此我不能使用@JsonIgnore,因为在另一种方法中我想调用该实体类中可用的所有列。

@Entity
@Table(name="student")
public class StudentDO 
    @Id
    @Column(name="studentId")
    private int studentId;

    @Column(name="studentName")
    private String studentName;

        @JsonIgnore
    @Column(name="studentPlace")
    private String studentPlace;

    @Column(name="studentstd")
    private String studentstd;

现在我想要一种方法,该方法提供忽略@JsonIgnore 列的数据,另一种方法在调用时提供所有四列,包括带有@JsonIgnore 注释的列。

你能帮我解决这个问题吗

【问题讨论】:

JSON 与此完全无关。要么创建一个只有列子集的“视图”类,要么直接进行 JPQL 查询。 可能重复***.com/questions/11626761/… 【参考方案1】:

这可以通过返回ResultSet 的自定义实体管理器查询来实现。

从 SpringBoot 上下文中获取 EntityManager

@PersistenceContext
private EntityManager entityManager;

Query query = entityManager.createQuery("SELECT s.studentId, s.studentName FROM student s");
List<StudentDO[]> studentRows = query.getResultList();

对于每个 StudentDO,属性的顺序对应于 SELECT 参数顺序。

针对不同的方法,可以编写不同的自定义查询。

【讨论】:

【参考方案2】:

您不能这样做,除非您使用特定的 hql 或 spring 数据存储库,例如:

findStudentNameAndStudentstdBysStudentId(int studentId)

【讨论】:

以上是关于如何为不同的方法选择特定的列?的主要内容,如果未能解决你的问题,请参考以下文章

如何为类的每个实例创建实例特定的方法?

Python 3:unittest.mock如何为特定输入指定不同的返回值?

如何为每个表计算由 SQL Server 中未指定数量的表共享的列中的不同值?

如何为Laravel中的每个会话设置不同的到期时间?

如何为不同的目标分配特定位置的 BundleDisplayNames

如何为oracle中的特定输入选择不包含空值的列名?