- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为我的应用添加一个添加到愿望 list 的功能,但我一直收到此错误:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: Column 'WISH_ID' cannot accept a NULL value.
Error Code: -1
Call: INSERT INTO WISHLIST (BOOK_TITLE, CUSTOMER_ID) VALUES (?, ?)
bind => [2 parameters bound]
Query: InsertObjectQuery(dukesbookstore.entity.Wishlist[ wishId=null ])
实体类:
@Entity
@Table(name = "WISHLIST")
@XmlRootElement
@NamedQueries(
{
@NamedQuery(name = "Wishlist.findByCustomerId", query = "SELECT w FROM Wishlist w WHERE w.customerId = :customerId"),
})
public class Wishlist implements Serializable
{
private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "WISH_ID")
private Integer wishId;
@Column(name = "CUSTOMER_ID")
private Integer customerId;
@Size(max = 35)
@Column(name = "BOOK_TITLE")
private String bookTitle;
public Wishlist()
{
}
public Integer getCustomerId()
{
return customerId;
}
public void setCustomerId(Integer customerId)
{
this.customerId = customerId;
}
public String getBookTitle()
{
return bookTitle;
}
public void setBookTitle(String bookTitle)
{
this.bookTitle = bookTitle;
}
}
这是创建新愿望的代码:
public void createWishlist(String title,int cust_id)
{
Wishlist newWish = new Wishlist();
newWish.setBookTitle(title);
newWish.setCustomerId(cust_id);
em.persist(newWish);
}
我试图查看其他类似的问题,但它们涉及我没有使用的 hibernate 。我也尝试过各种生成策略,例如 AUTO
、SEQUENCE
、TABLE
但都失败了。我还有另一个名为 customer 的实体,它完全相同,但尽管它是从表单创建的,但它工作正常。
更改为 AUTO
会产生此错误:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: Table/View 'SEQUENCE' does not exist.
Error Code: -1
Call: UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?
bind => [2 parameters bound]
Query: DataModifyQuery(name="SEQUENCE" sql="UPDATE SEQUENCE SET SEQ_COUNT = SEQ_COUNT + ? WHERE SEQ_NAME = ?")
root cause
java.sql.SQLSyntaxErrorException: Table/View 'SEQUENCE' does not exist.
root cause
org.apache.derby.client.am.SqlException: Table/View 'SEQUENCE' does not exist.
Persistence.xml 包含相关内容
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="myStorePU" transaction-type="JTA">
<jta-data-source>mydb</jta-data-source>
<class>myStore.entity.Book</class>
<class>myStore.entity.Customer</class>
<class>myStore.entity.Wishlist</class>
<properties>
<property name="javax.persistence.jdbc.user" value="APP"/>
<property name="javax.persistence.jdbc.password" value="APP"/>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
最佳答案
终于可以用了
首先,我必须删除我从 netbeans 数据库创建工具创建的表,它具有这样的创建代码,如使用“抓取结构”所见
create table "APP".WISHLIST
(
WISH_ID NUMERIC(5) not null primary key,
CUSTOMER_ID NUMERIC(5),
BOOK_TITLE VARCHAR(100)
)
其次,我将这段代码添加到我的 persistence.xml 文件中
<property name="eclipselink.ddl-generation" value="create-tables"/>
这解决了问题,因为它自己创建了表,它们具有不同的创建代码,从自动创建的抓取结构可以看出:
create table "APP".WISHLIST
(
WISH_ID INTEGER default GENERATED_BY_DEFAULT not null primary key,
CUSTOMER_ID NUMERIC(5),
BOOK_TITLE VARCHAR(100)
)
所以,基本上应该让 netbeans 从实体创建表本身,但我使用的是“从表创建实体”功能,为此我必须先在 netbeans gui 中创建表。
感谢@Geziefer 的所有帮助,我也从你的帮助中学到了很多东西。
关于java - 不能接受 @ID @generatedvalue JPA 实体上的 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19649896/
我是 hibernate 新手。我不明白以下两种主键生成策略: 身份 顺序 有人能解释一下这两者是如何工作的吗?这两者有什么区别? 最佳答案 引用 Java Persistence/Identity
问题: 我想在 hibernate 中映射以下内容 我在实现用户表时得到的错误是: 无法通过 User.id 的反射 setter 设置字段值 我正在使用 MySql 并且字段 ID 是自动递增的 @
我的 hibernate 配置如下: Entity @Table (name = "statuspaatelling") public class StatusPaaTelling { private
我有如下所示的实体,但无法理解为什么当我添加新记录时,生成的 ID 为 50、51、52... 如果 select nextval('seq_text'); 返回 1523 , 1524... 数据库
我有一个实体,它有一个非键列,我已将其设置为在我的数据库中自动生成。 我不能使用 @GeneratedValue,因为据我所知,它仅适用于关键字段。 在这种情况下,如何指示非键列是自动生成的? 最佳答
我的本地 postgres 数据库中有 10-15 个实体。 所有实体都包含一个整数类型的标识。请参阅下面的代码片段。 @Id @GeneratedValue(strategy = Generatio
这是我的实体: @Entity @Table @NoArgsConstructor @AllArgsConstructor @Setter @Getter public class Sample {
我很难找到对@GeneratedValue 的准确解释以及从数据库的角度来看发生的事情的不同策略。 是否总是查询数据库并返回最后一个可用值?如果 2 个不同的进程(不同的 Hibernate 应用程序
我正在开发一个必须部署在多个环境中的应用程序,使用不同的 RDBMS,即 MySQL、MariaDB 和 Oracle。这意味着不同的 ID 生成模式(自动递增与序列)。 JPA 应该允许从 RDBM
我有这个用户类 @Entity public class User { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE)
我使用 MyEclipse 中的 Scaffolding 生成 Web 应用程序项目,使用 spring MVC 和 MySQL 数据库。请给我一些解决问题的线索。 我遇到了 id 主键的问题。如果我
我设置我的实体属性 @GeneratedValue Long id; 并且我能够为数据库中的实体生成 ID。我的问题是为什么所有实体都共享相同的增量数字? 不是每个表都应该从零开始计数吗? 最佳答案
我试图用我想从数据库序列填充的属性来持久化一个实体。我正在使用 Oracle,已经创建了序列,通过 sql 验证了序列有效,但我的属性没有被填充。这是我所拥有的: @GeneratedValue(ge
我正在使用 hibernate 为表自动生成 ID,但我需要手动插入一些与另一个表相关的行(大约 10k,一次)。我正在使用 Oracle 数据库。我怎样才能做到这一点? hibernate 如何生成
JPA规范对注解@GeneratedValue(strategy=TABLE)给出了如下解释: The TABLE generator type value indicates that the pe
我有一个 hibernate 实体父类(super class): @MappedSuperclass public abstract class Pojo_Entity_SuperClass {
我真的很难理解为什么当表已经提供 auto_increment 时还要使用 @ generatedValue 来自动递增。有人可以向我解释一下吗? 最佳答案 @GenerateValue 用于通知 J
我是 postgresql 的新手。 在使用 Ebean 的 playframework 中,我使用了 mysql 和自动生成的值,在那种情况下实际上是自动递增的。我得到的序列是 1,2,3,4...
我正在使用 JPA 的 EclipseLink 实现,但遇到了问题。 这是我的实体类: @Entity@Table(name = "attendances")public class Attendan
我正在使用 JPA,当我将数据插入数据库时,我的 ID 会自动增加 50。我正在使用 persistence.GeneratedValue 来自动增加它: 这是我的模型/实体类的样子(要插入的实体
我是一名优秀的程序员,十分优秀!