我在寻找一些信息后写信给你,但由于英语不是我的第一语言,我可能错过了我的问题的答案。
描述: 我有两个实体。假设其中一个是User,另一个是UsersAttributes。 用户将如下所示:
@Entity
@NamedQueries({
//some queries
})
public class User implements Serializable
{
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
@ManyToMany
private List<UserAttributes> attributes;
//getters, setters, constructors, equals, hashCode..
}
然后是 UserAttributes 实体:
@Entity
@NamedQueries({
//some queries
})
public class UserAttributes implements Serializable
{
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
@NotNull
private String Name;
//getters, setters, constructors, equals, hashCode..
}
我想要的效果是: 用户是该关系的拥有方。 UserAttributes 是(我不知道我是否正确调用)字典 - 来自此实体的值可由用户<的任何对象使用/ strong>实体。例如,
user1 has UserAttributes 1,2
user2 has UserAttributes 2,3
user3 has UserAttributes 1,2,3
user4 has no UserAttributes
(我希望UserAttributes记录可以重复使用)
我写的代码工作得很好,实体之间的值分配得很好,但是
When I want to remove a record from UserAttributes I can't do it if it is already
in possesion of some User. How to solve this, what kind of mapping I should use,
should I used **cascade** attribute, and how to do this?
答案 0 :(得分:0)
首先,谢谢 JB Nizet
征求意见。 我想我已经通过使用mappedBy属性解决了它。在UserAttributes中,我添加了这个:
@ManyToMany(mappedBy="attributes")
private List<User> users;
在用户中我没有改变任何东西。现在我可以删除属性&#34;无论如何&#34;来自用户实体,并且所有记录都会传播更改,并且没有例外。