Hibernate可以用一个bean更新两个表吗?
我正在使用Hibernate和Spring开发一个项目;一个屏幕,一个bean,但两个表。我想知道Hibernate是否可以在一次调用中更新两个 MySQL表格?Hibernate可以用一个bean更新两个表吗?
如果是这样,我该如何编码下面的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
}
你需要使用@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
感谢您的信息,我可以问问你在哪里找到这个?我一直在寻找天......谢谢 – SJS 2011-04-10 21:20:01
@Stuttering - 它在Hibernate Annotations手册(上面的答案中有一个链接);它也在Hibernate Core手册(http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#d0e6906)第5.1.6.5章节中,尽管它被相当混淆地放在“继承“部分在那里。 – ChssPly76 2011-04-10 22:20:24
或者如果您使用两个以上的表格,我们可能会多次为同一个实体使用@SecondaryTables注释(+1) – 2011-04-11 04:42:00
,如果您需要它是在不同的表,这样做
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
}
为什么权限位于不同的表中,如果它们属于用户? – 2011-04-10 19:18:32
可能的[Hibernate-Spring;一个屏幕,一个豆,但两个表](http://stackoverflow.com/questions/5588546/hibernate-spring-one-screen-one-bean-but-two-tables) – axtavt 2011-04-10 19:22:00