我有一个问题。我有两个表在数据库和两个类的Hibernate。
班级物品:
@Entity
@Table(name = "Artikel")
public class Artikel{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String artikelbezeichnung;
private int artikelnummer;
private Float preis;
@OneToMany(mappedBy = "artikel", fetch = FetchType.LAZY)
@JsonManagedReference
private List<Artikeldetails> artikeldetails;
分类文章详细信息
@Entity
@Table(name="ARTIKELDETAILS")
public class Artikeldetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String artikeldetail;
private String artikelcustom;
private String artikelselektion;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="artikelid")
@JsonBackReference
private Artikel artikel;
JPA查询:
List<Artikel> findByArtikelnummer(@Param("artikelnummer") int artikelnummer);
结果是例如:
[{
"id": 3,
"artikelbezeichnung": null,
"artikelnummer": 123,
"preis": 123.0,
"artikeldetails": [{
"id": 4,
"artikeldetail": "DetailNummer 1",
"artikelcustom": "Detail Nummer 1",
"artikelselektion": "Detail Nummer 1"
}, {
"id": 5,
"artikeldetail": "DetailNummer 2",
"artikelcustom": "Detail Nummer 2",
"artikelselektion": "Detail Nummer 2"
}, {
"id": 6,
"artikeldetail": "DetailNummer 3",
"artikelcustom": "DetailNummer 3",
"artikelselektion": "DetailNummer 3"
}
]
}
]
这是很好的工作,但现在我只想只得到没有加入的文章数据。我应该怎么做?我必须为此创建一个新的类吗?
我也试着改变这条线:
@Query(value = "SELECT a FROM Artikel a where a.artikelnummer = :artikelnummer")
List<Artikel> findByArtikelnummer(@Param("artikelnummer") int artikelnummer);
但这没用。
1条答案
按热度按时间pn9klfpd1#
我现在有了解决方案:
如果您将fetch = FetchType.LAZY包含到OneToMany和ManyToOne中,则可以使用
如果你选择FetchType.Eager他会自动加入每次OneToMay关系。