- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何防止 TopLink 复制现有数据?使用 Java 代码来做到这一点是个好主意,还是应该将其内置到数据库中并让插入失败?
在本例中,我想确保 newsgroups.newsgroup
是唯一的,并且 articles.header_id_string
也是唯一的。
也许最好的方法是简单地运行 Java JPQL 中的唯一性查询?
架构:
mysql>
mysql> show tables;
+---------------------+
| Tables_in_nntp |
+---------------------+
| articles |
| newsgroups |
| newsgroups_articles |
+---------------------+
3 rows in set (0.01 sec)
mysql> describe newsgroups;
+-----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| newsgroup | text | NO | | NULL | |
+-----------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> describe articles;
+------------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| subject | text | NO | | NULL | |
| content | text | NO | | NULL | |
| number | int(11) | NO | | NULL | |
| sent | date | NO | | NULL | |
| header_id_string | text | NO | | NULL | |
+------------------+---------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
mysql> describe newsgroups_articles;
+--------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| article_id | int(11) | NO | | NULL | |
| newsgroup_id | int(11) | NO | MUL | NULL | |
+--------------+---------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql>
新闻组实体:
package net.bounceme.dur.usenet.model;
import java.io.Serializable;
import javax.mail.Folder;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
@Entity
@Table(name = "newsgroups", catalog = "nntp", schema = "")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Newsgroups.findAll", query = "SELECT n FROM Newsgroup n"),
@NamedQuery(name = "Newsgroups.findById", query = "SELECT n FROM Newsgroup n WHERE n.id = :id")})
public class Newsgroup implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Lob
@Column(name = "newsgroup", nullable = false, length = 65535)
private String newsgroup;
public Newsgroup() {
}
public Newsgroup(Folder f){
newsgroup = f.getFullName();
}
public Newsgroup(Integer id) {
this.id = id;
}
public Newsgroup(Integer id, String newsgroup) {
this.id = id;
this.newsgroup = newsgroup;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNewsgroup() {
return newsgroup;
}
public void setNewsgroup(String newsgroup) {
this.newsgroup = newsgroup;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Newsgroup)) {
return false;
}
Newsgroup other = (Newsgroup) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "net.bounceme.dur.usenet.model.Newsgroups[ id=" + id + " ]";
}
}
以及文章实体:
package net.bounceme.dur.usenet.model;
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import net.bounceme.dur.usenet.controller.MessageBean;
@Entity
@Table(name = "articles", catalog = "nntp", schema = "")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Articles.findAll", query = "SELECT a FROM Article a"),
@NamedQuery(name = "Articles.findById", query = "SELECT a FROM Article a WHERE a.id = :id"),
@NamedQuery(name = "Articles.findByNumber", query = "SELECT a FROM Article a WHERE a.number = :number"),
@NamedQuery(name = "Articles.findBySent", query = "SELECT a FROM Article a WHERE a.sent = :sent")})
public class Article implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Lob
@Column(name = "subject", nullable = false, length = 65535)
private String subject;
@Basic(optional = false)
@Lob
@Column(name = "content", nullable = false, length = 65535)
private String content;
@Basic(optional = false)
@Column(name = "number", nullable = false)
private int number;
@Basic(optional = false)
@Column(name = "sent", nullable = false)
@Temporal(TemporalType.DATE)
private Date sent;
@Basic(optional = false)
@Lob
@Column(name = "header_id_string", nullable = false, length = 65535)
private String headerIdString;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "newsgroupId")
private Collection<NewsgroupsArticles> newsgroupsArticlesCollection;
public Article() {
}
public Article(MessageBean messageBean) {
subject = messageBean.getSubject();
content = messageBean.getContent();
sent = messageBean.getSent();
number = messageBean.getNumber();
headerIdString = "dummy";
}
public Article(Integer id) {
this.id = id;
}
public Article(Integer id, String subject, String content, int number, Date sent, String headerIdString) {
this.id = id;
this.subject = subject;
this.content = content;
this.number = number;
this.sent = sent;
this.headerIdString = headerIdString;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Date getSent() {
return sent;
}
public void setSent(Date sent) {
this.sent = sent;
}
public String getHeaderIdString() {
return headerIdString;
}
public void setHeaderIdString(String headerIdString) {
this.headerIdString = headerIdString;
}
@XmlTransient
public Collection<NewsgroupsArticles> getNewsgroupsArticlesCollection() {
return newsgroupsArticlesCollection;
}
public void setNewsgroupsArticlesCollection(Collection<NewsgroupsArticles> newsgroupsArticlesCollection) {
this.newsgroupsArticlesCollection = newsgroupsArticlesCollection;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Article)) {
return false;
}
Article other = (Article) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "net.bounceme.dur.usenet.model.Articles[ id=" + id + " ]";
}
}
最佳答案
should that be built into the database and let inserts fail?
当然,将其放入数据库中。
这是你的“最后一道防线”,几乎没有办法绕过它。如果您只有 Java 代码,则无法防止错误的 SQL 脚本或编程错误。
您仍然可以检查您的代码,例如向用户显示更好的错误消息。
关于mysql - 使用 JPQL 或 SQL 确保唯一性(不同记录)?或两者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11700064/
我在理解应该如何在 JWT 中使用 jti 声明时遇到一些问题。据我在其他 SO 问题和在线文档中看到的,想法是它们应该是独一无二的,但在什么范围内是独一无二的?每个站点/应用程序一个 jti?每个
我想知道cookie名称的最大值是多少?每个域和/或路径的 cookie 名称是否唯一? 最佳答案 所有这些信息均在RFC 2965 - HTTP State Management Mechanism
这基本上是问题 here 的扩展. 我正在处理一个旧的 MFC 应用程序,其中的 resource.h 文件似乎已被手动编辑并且变得困惑。我看到那里有冲突的 ID。 我只是想确认我们是否可以拥有两个具
1. codeigniter的上传库的encrypt_name选项检查是唯一的? 我知道overwrite选项很重要。如 overwrite是 TRUE ,它会覆盖,如果是 FALSE ,它将通过在名
我可以确定.Method.MethodHandle.GetFunctionPointer()每个匿名函数都是唯一的吗? 想做 public static T Get(Func getDataCallb
在时态表 (Oracle DBMS) 中强制键唯一性的最佳方法是什么。时态表是一个时间跨度记录所有历史状态的表。 例如,我们有一个这样的 Key --> Value 关联 ... create tab
对于某些测试,我需要生成一个可能很长的非随机整数序列,该序列具有预定义的唯一性。我将唯一性定义为一个 float ,等于“序列中唯一 数的数量”除以“序列总长度”。这个数字应该在(0, 1]半开区间内
我敢肯定这是一个愚蠢的问题,但谷歌搜索让我一无所获。 是否每个设备供应商都构建自己的 Android?更重要的是,每个设备供应商是否使用其(供应商的)自己的系统签名 key 对其构建进行签名,这样我们
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Is a GUID unique 100% of the time? 看完Guid上的所有帖子后,我仍然不清
我有用户放置的链接和他们在数据库中将被保存 对于 facebook,url 可能是这样的 www.facebook.com http://facebook.com https://facebook.c
给定以下 key : int key = Guid.NewGuid().GetHashCode(); 这个key是否像Guid的唯一性一样唯一? 最佳答案 pigeonhole principle说不
在 C++11 中,我正在使用这个 typeid(T).name() 用于我自己的哈希计算。我不需要程序运行或编译之间的结果相同。我只需要它对于类型是唯一的。我知道,它可以为不同的类型返回相同的名称,
我有一个关于唯一性验证的问题。 来自:http://guides.rubyonrails.org/active_record_validations_callbacks.html#uniqueness
线程上下文的类加载器有多独特。每次启动线程时都会重置吗? 我们能否始终确保 2 个并行线程永远不会具有相同的上下文类加载器? 我看到像 Axis 这样的一些框架依赖于此来获取和设置运行时设置变量。 最
在 UITableViewCell 中,单元格中有多个 uitextfield 那么如何在 uitextfield 委托(delegate)方法中识别哪个文本字段生成操作而不是标记属性? 最佳答案 你
在 Rails 3.0.12 (Ruby 1.8.7) 中使用 UTF 字符时,我遇到了 Rails 唯一性验证器的问题。 这是我的小测试: 正确: name = "dave" count = Use
我正在编写一个用户系统,用户将在其中使用 Twitter 的 API 登录,然后我将信息连同我让用户输入的一些额外信息一起存储在数据库中。我希望用户能够登录后返回,而不必再次登录。我决定获取有关用户的
OPC UA规范(第3部分:地址空间模型)说 5.2.2 NodeId ... A Server shall persist the NodeId of a Node, that is, it sha
是否可以使用 XML 1.1 模式来验证文档中没有两个元素共享一个 id。例如,附加的 XML 文档应该失败,因为 id 的 0、1 和 3 不是唯一的。
在 SQL Server 中,我创建了一个带有 ID 列的表,我将其设为 IDENTITY COLUMN, EmployeeID int NOT NULL IDENTITY(100,10) PRIMA
我是一名优秀的程序员,十分优秀!