我有一个Site
代表网站的Class和一个Class User
。A Site
可以有多个User
。
class Site {
private int site_ID;
@OneToMany // with a join table
private List<User> users;
// ...
}
class User {
private int user_ID;
private String name;
private String lastname;
private String username;
private String password;
}
我想允许所有站点上都存在相同的用户名,但每个站点上都只有一个。
Site/User/username
1 /1 /username1
1 /2 /username2
2 /3 /username1
我怎样才能做到这一点?
让用户拥有一个站点参考:
@ManyToOne(optional=false)
private Site site;
现在将约束添加到用户:
@Table(uniqueConstraints = {
@UniqueConstraint(columnNames = { "username", "site" }))
} @Entity
public class User{
// etc
}
您还必须更改站点映射:
@OneToMany(mappedBy="site")
private List<User> users;
这是我的JPA实体类: 这个类有一个相当复杂的唯一约束:的组合被认为是唯一的。 所以我在类中添加了以下约束注释: 当我尝试练习我的课时,我得到以下例外情况: 异常要点是: 如果我没有在幕后为单个实体类指定该约束,Hibernate将生成两个表:一个表用于所有“简单”实体数据,另一个表用于实体数据: ... 这个问题以前读: JPA:跨集的唯一约束(...另一个表上的唯一约束) 进一步思考我的问题,
问题内容: 当违反唯一约束时,将引发a。但是可能有多种原因抛出异常。我如何才能发现违反了唯一约束? 问题答案: 我如何才能发现违反了唯一约束? 异常是链接在一起的,您必须递归调用以获取提供程序特定的异常(并可能转到),以将其转换为应用程序可以很好地为用户处理的内容。下面将打印异常链: 对于异常处理和“翻译”,您可以执行类似于Spring的操作(请参阅各种类,例如,以获取想法)。 所有这些都不是很好
我有一张桌子,不知怎的,同一个人进了我的桌子两次。现在,主键只是一个自动编号,但还有两个字段存在,我想强制它们是唯一的。 例如,这些字段是: 我只想要一张带有唯一PersonNumber和Active=1的唱片 (因此这两个字段的组合必须是唯一的) SQL server中现有表的最佳方式是什么?我可以这样做,如果其他任何人使用与现有值相同的值进行插入,则插入失败,因此我不必在应用程序代码中担心这一
问题内容: 我想在MySQL表中添加一列,命名为。在此列中,只有一个记录可以设置为。 如何使用mysql将这个约束添加到我的列中? 谢谢! 更新 如果不是一个限制,我应该添加。我们如何处理数据库上的此类问题? 问题答案: 我认为这不是对单个默认值的情况进行建模的最佳方法。 取而代之的是,我将IsDefault列留在外面,并创建一个单独的表,该表只有一行,并且只有构成主表主键的列。在此表中,放置标识
问题内容: 以下模型是一个事件的简单邀请,从一个用户发送到另一个用户。我想确保邀请在以下三列中是唯一的:to_user,from_user和event。 我尝试使用本专栏,但它不起作用。该约束应在SQLite以及生产中的MySQL上均有效。如何定义此唯一约束? 问题答案: 您需要将约束添加到表,而不是模型。为此,请使用声明式: 如果已经在数据库中创建了表,则需要删除该表并再次运行,或者使用Alem
我使用一个Postgreql数据库与JPA/Hibernate.当我向列添加约束时,即“nullable=false”,数据库列不会改变以反映这一点。删除表并重新运行应用程序即可完成此工作。 这是否可以通过JPA/Hibernate机制实现,而无需删除条目或表?比如“尝试更改表,并拒绝在不一致的数据上这样做”?在我的application.properties,我已经设置 任何其他设置似乎都在删除