Hibernate可以用一个bean更新两个表吗?

SJS*_*SJS 0 java spring hibernate

我正在使用Hibernate和Spring开发一个项目; 单个屏幕,一个bean,但有两个表.我想知道Hibernate是否可以在一次调用中更新两个 MySQL表?

如果是这样,我如何编写以下bean(模型)来更新两个表!

用户名和密码位于用户表中.用户名和启用位于权限表中.

以下是我的代码:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue
    @Column(name = "userid")
    private Long userId;  // in user and rights tables!

    @NotEmpty(message = "User name must not be blank.")
    @Size(max = 20)
    @Column(name = "username", nullable = false, length = 20)
    private String username; // in user table

    @NotEmpty(message = "Password must not be blank.")
    @Size(max = 20)
    @Column(name = "password", nullable = false)
    private String password; // in user table

    @Column(name = "enabled")
    private Long enabled; // in rights table
}
Run Code Online (Sandbox Code Playgroud)

Chs*_*y76 8

您需要使用@SecondaryTable批注,并在相应的@Column注释中指定该表的名称:

@Entity
@Table(name="users")
@SecondaryTable(name="rights", pkJoinColumns=
    @PrimaryKeyJoinColumn(name="userid", referencedColumnName="userid")
)
public class User {

...

@Column(name = "enabled", table="rights")
private Long enabled; // in rights table
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您使用两个以上的表,我们可以对同一个实体多次使用@SecondaryTables注释(+1) (2认同)