gpt4 book ai didi

spring - hibernate 加入不同模式或 session 中的两个实体

转载 作者:行者123 更新时间:2023-12-02 04:28:43 24 4
gpt4 key购买 nike

我有多个模式,每个表都有。

动物宠物

@Entity
@Table(schema = "ANIMAL", name = "pet")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Pet {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idx")
private Integer idx;

@Column(name = "name")
private String name;
}

人类
@Entity
@Table(schema = "HUMAN", name = "person")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idx")
private Integer idx;

@Column(name = "name")
private String name;

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="pet_idx")
private Pet pet;
}

我使用了标准 5.3 并制作了每个配置,它有自己的数据源、 session 工厂和事务管理器。

每个 Repository 使用它们的 TransactionManager 和 Session。


@Repository
@Transactional(value = "AnimalTransactionManager", readOnly = true)
public class AnimalRepository implements BaseRepository {

@Autowired
@Qualifier("AnimalSessionFactory")
private SessionFactory sessionFactory;

public Session session () {
return sessionFactory.openSession();
}

public CriteriaBuilder createCriteria() {
return session().getCriteriaBuilder();
}
}

这些是我尝试过的。

  1. @JoinTable
  2. @SecondaryTable


可连接表和辅助表注释只能连接它们的每个 Id 值,因此会带来错误的值。

  1. Join < Pet, Person >


所以我在使用我的标准查询时尝试使用 Join。由于我使用关于 ANIMAL 的 Session 是 pet 的模式,它调用 ANIMAL.person 并带来错误。

我发现没有关于在不同模式中加入两个实体并具有不同 session 的答案。

那些不会带来我想要和期望的结果。

那么有没有人对可以在不同模式或 session 中加入两个实体的 joincolumn 有想法?

最佳答案

我想通了这个问题。

将属性名称“目录”与模式的值相同。

@Table(schema = "HUMAN", catalog = "HUMAN", name = "person")

我还不知道它是如何工作的,但它对我来说效果很好。
如果我对此有任何想法,我将编辑此答案。

关于spring - hibernate 加入不同模式或 session 中的两个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50958784/

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