gpt4 book ai didi

java - Hibernate:在一对多关系中指定列

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:37 24 4
gpt4 key购买 nike

我正在尝试为我基本上无法控制的数据库架构构建一个 Hibernate 层。简化一下,有两个表。

parent 有两个重要的列:

  • parent_id,整数,主键,自增
  • parent_code,字符串,唯一键,由某处的黑框生成(为了理智起见,假设这是一个 UUID)
  • 加上一堆数据列

child 有两个重要的列:

  • child_parent_id,整数,主键,自增
  • child_parent_code,字符串,指向parent的parent_code值的外键
  • 加上一堆数据列

我希望能够调用 Parent.getChilds() 并获取子对象的集合。但是设置 Hibernate 映射文件似乎是不可能的。它对下面的映射所做的是使用 parent_id 值(而不是 parent_code)搜索 child 表。

Parent.hbm.xml中:

    <set name="childs" inverse="true" lazy="true" table="child" fetch="select">
<key>
<column name="child_parent_code" not-null="true" />
</key>
<one-to-many class="foo.bar.Child" />
</set>

Child.hbm.xml 中:

    <many-to-one name="parent" class="foo.bar.Parent" fetch="select">
<column name="child_parent_code" not-null="true" />
</many-to-one>

我花了一个小时仔细阅读了我的Java Persistence with Hibernate 副本,但我不知道如何做我想做的事。可能吗?

最佳答案

我会考虑使用 hibernate 注解。我发现它们比 xml 定义更容易使用。

这是注释格式的代码:

@Entity
@Table(name="parent")
public class Parent
{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@ManyToOne
@JoinColumn(name="child", referencedColumnName = "id")
private Child child;
}

@Entity
@Table(name = "child")
public class Child
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int id;

@Column(name = "code")
public String code;
}

关于java - Hibernate:在一对多关系中指定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1049809/

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