如何为不同的方法选择特定的列?
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 中未指定数量的表共享的列中的不同值?