我有个问题要问.我在数据库中有两个表,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"
            }
        ]
    }
]

这很好,很有效,但现在我只想在没有连接的情况下获得Artikel数据.我该怎么做呢?我必须为此创建一个新的类吗?

我还试图更改这一行:

@Query(value = "SELECT a FROM Artikel a where a.artikelnummer = :artikelnummer")
List<Artikel> findByArtikelnummer(@Param("artikelnummer") int artikelnummer);

但这并不管用.

推荐答案

我现在有了解决方案:

如果将FETCH=FetchType.LAZY包含到OneToMany和ManyToOne,则只能使用

@Query(value = "SELECT a FROM Artikel a where a.artikelnummer = :artikelnummer")
List<Artikel> findByArtikelnummer(@Param("artikelnummer") int artikelnummer);

如果您 Select FetchType.Eager,他将在每次OneToMay关系时自动加入.

Java相关问答推荐

长音符

更新我们的一个文物后出现了严重的符号引用错误

替换com. sun. jndi. dns. DnsContextFactory Wildfly23 JDK 17

是否保证在事务性块的末尾标记违反约束?

如何获得执行人?

内存中的H2修剪尾随空格

在AVL树的Remove方法中使用NoSuchElementException时遇到问题

Bean定义不是从Spring ApplationConext.xml文件加载的

Helidon 4和Http API

Spring @Value default无法计算表达式

无法播放音频:从资源加载库GStreamer-Lite失败

如何配置空手道以使用FeignClient或RestTemplate代替ApacheHttpClient

IntelliJ IDEA依赖项工具窗口丢失

在实例化中指定泛型类型与不指定泛型类型之间的区别

如何修复Spring Boot应用程序中的RestDocumentationGenerationException:java.io.FileNotFoundException:/curl-request.adoc(只读文件系统)?

将@Transactional添加到Spring框架中链下的每个方法会产生什么效果?

MapStruct记录到记录的映射不起作用

什么是;u〃;平均值;jdku;在java开发工具包中?

Java 8 中 ByteBuffer 和 BitSet 的奇怪行为

Xml Reader 将 BMP 外部的字符解析为代理项对,这会导致无效的 xml