我发现了其他有相同错误的主题,但没有一个似乎涵盖了我的问题。
你能帮我弄清楚是什么问题吗?
多谢!
import lombok.AccessLevel;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.Setter;
import lombok.experimental.Accessors;
@Accessors(fluent = true)
@Data
@Entity
@NoArgsConstructor
public class BusinessDomain {
@Setter(AccessLevel.NONE)
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@NonNull
@Column(unique=true)
private String name;
@OneToMany(mappedBy = "domain", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<BusinessSubDomain> subDomains = new LinkedHashSet<>();
public void addSubDomain(BusinessSubDomain subDomain) {
subDomains.add(subDomain);
}
}
@Accessors(fluent = true)
@Data
@Entity
@NoArgsConstructor
public class BusinessSubDomain {
@Setter(AccessLevel.NONE)
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@ManyToOne(optional = false)
@JoinColumn(name = "business_domain_id", referencedColumnName="id")
private BusinessDomain domain;
}
@Override
public BusinessDomain saveOrUpdate(BusinessDomain businessDomain) throws OrcaException {
try {
BusinessDomain domain = businessDomainRepository.findByName(businessDomain.name());
if(null == domain) {
// Repository class not overriden (extends CrudRepository<BusinessDomain, Long>)
return businessDomainRepository.save(businessDomain);
} else {
domain.description(businessDomain.description());
domain.subDomains(businessDomain.subDomains());
return businessDomainRepository.save(domain);
}
} catch (Exception e) {
throw new OrcaException(e);
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class BusinessDomainTest {
@Test
@Transactional
public void createBusinessDomainWithSubDomain() throws OrcaException {
BusinessDomain passengerBusinessDomain = new BusinessDomain().name(DOMAIN_NAME).description(DOMAIN_DESCRIPTION);
BusinessSubDomain distributionBusinessSubDomain = new BusinessSubDomain().name(SUBDOMAIN_NAME)
.description(SUBDOMAIN_DESCRIPTION);
passengerBusinessDomain.addSubDomain(distributionBusinessSubDomain);
businessDomainService.saveOrUpdate(passengerBusinessDomain);
BusinessDomain domain = businessDomainService.findByName(DOMAIN_NAME);
}
}
我终于明白了。
首先,实体加法器必须是
public void addSubDomain(BusinessSubDomain subDomain) {
subDomains.add(subDomain);
subDomain.domain(this);
}
但这会导致无限调用哈希方法的无限循环。
所以我在网上搜索了我的问题的答案,但没有找到有帮助的东西,基本上是需要在两个类之间有一个ManyToOne关系,其中一个类有一个EmbeddedId,我要把代码留在这里,错误信息是它给(我使用野蝇来运行服务器)。 公共类InventoryPK实现可序列化{ } @实体@Table(name=“inventario”,schema=“mxnextmob”) 公共类库存扩展基本模型{ } 公共类公司扩
问题内容: 我在父子关系中使用javax.persistence.OneToMany关系。父ID为null,我已经阅读了Stackoverflow中的所有相关文章,但没有得到我所缺少的任何线索。 根据提供的序列,所有对应的PK都填充在父表和子表中,但是FK在子表中设置为null 家长班: 儿童班: 服务等级: 样本json 请提出建议。 问题答案: 通常,空FK列仅来自设置关系的一侧。 我想你有以
问题内容: 我有2个名为PurchaseList.java和PurchaseListItems.java的类 我必须在PurchaseListItems中映射PurchaseList PurchaseList.java PurchaseListItems.java 一切都很好,但我在pl_id中为空。请告诉我我错了 问题答案: 您的映射实际上定义了两个独立的单向关系。您想要的是一个双向关系。下面的
问题内容: 我看不到“多对一”关系与“一对一”关系的架构有什么区别: 与 有什么区别吗? 问题答案: 它们在架构上看起来完全相同,但是在Hibernate Layer上有所不同。 如果尝试这样的操作: 一切都会好起来的。但是,保存后,如果您尝试获取订单: 当然,在两种情况下,您的Address类应该看起来有所不同。
我在映射时遇到一个问题: 马达。Java 查询“from motor”是一个classname。但它仍然不起作用。如何按id vnopol查询?
问题内容: 我目前正在阅读有关实体关联的Hibernate文档,但遇到一些困难却难以理解。它在本质上做的区别和联系。尽管我在实际项目中使用了它们,但是我无法完全理解它们之间的差异。据我了解,如果一个表/一个实体与另一个实体有关联,则该关联应来自另一侧。那么,我们应该如何根据具体情况决定选择哪个呢?它又如何影响数据库/查询/结果?到处都有很好的例子吗? PS:我认为这与问题相关,如果有人可以解释关联