Java JPA:有没有办法运行一个只访问几列的简单SELECT语句?
我是JPA新手,所以如果我的问题看起来很愚蠢,请原谅我 我们在项目中使用了JPA。我看到每个实体对象都有一个与表的直接映射,表中的每一行都是该实体类型的对象 但是,假设我只想访问一个表的一列或两列,我该怎么做呢?我问的原因是因为我手头的任务 有两张桌子。第一个表使用JPA设置了所有内容,以便可以将每一行转换为对象类型。第一个表有一列在第二个表中引用,即表Java JPA:有没有办法运行一个只访问几列的简单SELECT语句?,java,jpa,jdbc,Java,Jpa,Jdbc,我是JPA新手,所以如果我的问题看起来很愚蠢,请原谅我 我们在项目中使用了JPA。我看到每个实体对象都有一个与表的直接映射,表中的每一行都是该实体类型的对象 但是,假设我只想访问一个表的一列或两列,我该怎么做呢?我问的原因是因为我手头的任务 有两张桌子。第一个表使用JPA设置了所有内容,以便可以将每一行转换为对象类型。第一个表有一列在第二个表中引用,即表a有列CLOTH\u ID,表B有列CLOTH\u ID和CLOTH\u DESCRIPTIONCLOTH_ID用于表A和B;但是B具有与CLO
a
有列CLOTH\u ID
,表B
有列CLOTH\u ID
和CLOTH\u DESCRIPTION
CLOTH_ID
用于表A
和B
;但是B
具有与CLOTH\u ID
相对应的CLOTH\u DESCRIPTION
列
我正在网页中显示表格
A
,但我还需要在网页中显示:CLOTH\u DESCRIPTION
。是否有一种面向JPA的方法可以做到这一点,或者我最好使用常规JDBC来提取布料描述
值 我假设您有以下设置:
@Entity
@Table(name="A")
class A {
@ManyToOne
@JoinColumn(name="CLOTH_ID")
private B cloth;
//...
}
@Entity
@Table(name="B")
class B {
@Id
@Column(name="CLOTH_ID")
private int id;
@Column(name="CLOTH_DESCRIPTION")
private String description;
//...
}
如果你不。。。你做错了(也就是说,这不是惯用的JPA用法)。您有以下选项:
只需获取A
在这种情况下,默认情况下,@manytone
关系也将被急切地获取。然后只需在Java中调用:
a.getCloth().getDescription()
首选此方法,因为它是最简单和最惯用的方法,除非B中的列数很大
对自定义列使用JPA查询:
在这种情况下,查询返回列表
,其中对象[]
实际上包含两个元素:A
和字符串
同上,但使用自定义DTO:
和稍微修改的查询:
SELECT new Adto(a, a.b.description)
FROM A a
WHERE a.id = :id
我假设您具有以下设置:
@Entity
@Table(name="A")
class A {
@ManyToOne
@JoinColumn(name="CLOTH_ID")
private B cloth;
//...
}
@Entity
@Table(name="B")
class B {
@Id
@Column(name="CLOTH_ID")
private int id;
@Column(name="CLOTH_DESCRIPTION")
private String description;
//...
}
如果你不。。。你做错了(也就是说,这不是惯用的JPA用法)。您有以下选项:
只需获取A
在这种情况下,默认情况下,@manytone
关系也将被急切地获取。然后只需在Java中调用:
a.getCloth().getDescription()
首选此方法,因为它是最简单和最惯用的方法,除非B中的列数很大
对自定义列使用JPA查询:
在这种情况下,查询返回列表
,其中对象[]
实际上包含两个元素:A
和字符串
同上,但使用自定义DTO:
和稍微修改的查询:
SELECT new Adto(a, a.b.description)
FROM A a
WHERE a.id = :id
很高兴我能帮忙。如果需要进一步的帮助,请考虑或提供一些细节。如果需要进一步的帮助,请考虑或提供一些细节。