Может ли Hibernate обновить две таблицы одним бином? - PullRequest
0 голосов
/ 10 апреля 2011

Я работаю над проектом с использованием Hibernate и Spring;один экран, один бин, но две таблицы.Я хотел знать, может ли Hibernate обновить две таблицы MySQL в рамках одного вызова?

Если это так, как мне кодировать следующий компонент (модель) для обновления двух таблиц!1006 * Имя пользователя и пароль в пользовательской таблице.Имя пользователя и включенный находится в таблице прав.

Ниже мой код:

@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
}

Ответы [ 3 ]

8 голосов
/ 10 апреля 2011

Вам нужно будет использовать аннотацию @ 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
0 голосов
/ 10 апреля 2011

Если вам нужно, чтобы он был в другой таблице, сделайте что-то вроде этого

class User {
    Long userid;
    String username; // why both a userid and a username?
    String password;
    Rights rights;
}

class Rights {
    boolean enabled;
    boolean canModerate;
    int maxSomething;
    // other rights here
}
0 голосов
/ 10 апреля 2011

Я почти уверен, что вы не можете сделать это.В некотором смысле ORM предназначен для отображения одной строки на один объект.Лучшее, что вы можете сделать, - это использовать представление SQL для создания структуры только для чтения, соответствующей этому компоненту.Это позволит вам запрашивать ваши данные в структуре, которую вы разработали, но вы не сможете выполнять обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...