相关疑难解决方法(0)

表可以有多个主键吗?

我现在很困惑,也许你可以帮助我更好地理解这个问题,如果表有两个主键,如果是,那么如何?那不是为什么?

mysql sql database sql-server sql-server-2008

17
推荐指数
3
解决办法
8万
查看次数

Hibernate外键作为主键的一部分


我必须使用hibernate并且不太确定如何解决这个问题,我有2个表,其中有一个1..n关系,如下所示:

-------
TABLE_A
-------
first_id (pk)
second_id (pk)
[other fields]

-------
TABLE_B
-------
first_id (pk)(fk TABLE_A.first_id)
second_id (pk)(fk TABLE_A.second_id)
third_id (pk)
[other fields]

如何使用Hibernate管理它?

我不知道如何管理第二个表的主键...

hibernate foreign-keys composite-primary-key

9
推荐指数
1
解决办法
3万
查看次数

Spring Data JPA - 删除子实体而不是在更新时设置为 null?

我有以下域模型

users
----
id (PK)
name

orders
------
id (PK)
userid (PK)
name
Run Code Online (Sandbox Code Playgroud)

Orders.userid 引用 User 中的 id,并且是复合主键的一部分。(我需要主键中的 userid,因为它是分区键,并且在 MySQL 中,如果没有分区键,我们无法创建主键)

在使用 JPA 更新用户时,如果我尝试使用以下命令清除关联的订单集合

User user = userRepository.getOne(id);
user.getOrders().clear();
userRepository.save(user);
Run Code Online (Sandbox Code Playgroud)

JPA 首先尝试将关联订单上的 userid 设置为 null,然后删除该行。由于 userid 不可为 null 并且是主键的一部分,因此此操作会失败。有没有办法告诉 JPA 它只需要删除订单行而不首先将 userid 列设置为 null ?

更新

映射:我的映射是这样的:

@Entity
@Table(name = "users")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
    public Long id;

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

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name="userid", referencedColumnName = "id", insertable …
Run Code Online (Sandbox Code Playgroud)

java mysql spring jpa spring-data

4
推荐指数
1
解决办法
1万
查看次数