gpt4 book ai didi

java - criteria.list() 返回两个条目而不是一个

转载 作者:行者123 更新时间:2023-12-01 13:27:51 25 4
gpt4 key购买 nike

Hibernate criteria.list() 返回两个条目而不是一个。数据库中只有一个 TaxTable 条目和 2 个相应的 TaxEntries。我认为我所做的连接有问题。这是我的代码:税表:

@Entity
@Table(name = "tax_table")
public class TaxTable implements Serializable {
@Id @GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "taxTable",cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<TaxEntry> entries;
...

税项:

@Entity
@Table(name = "tax_entry")
public class TaxEntry implements Serializable {
@Id @GeneratedValue
private Long id;
private String name;
private BigDecimal percentage;

@ManyToOne
@JoinColumn(name = "account_id")
private Account toAccount;

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "taxtable_id")
private TaxTable taxTable;
...

为了获取结果,我使用以下代码:

@SuppressWarnings("unchecked")
@Transactional
public List<TaxTable> findAll() {
Session session = sessionFactory.getCurrentSession();
Criteria taxTableCriteria = session.createCriteria(TaxTable.class);
taxTableCriteria.addOrder(Order.asc("name"));
return taxTableCriteria.list();
}

在我的测试中,我创建了一个包含 2 个taxEntries 的 TaxTable:

...
taxEntryVAT.setTaxTable(taxTable);
taxEntryWT.setTaxTable(taxTable);
taxEntries.add(taxEntryVAT);
taxEntries.add(taxEntryWT);
taxTable.setEntries(taxEntries);
taxTableDao.create(taxTable);

并且提取将返回 2 个具有相同 id 的taxTables 的列表,而不是一个:

List<TaxTable> result = taxTableDao.findAll();

有什么想法吗?

谢谢

最佳答案

使用:criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

关于java - criteria.list() 返回两个条目而不是一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com