- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean(使用 NetBeans IDE 8.0.1)。我在该表中遇到了一个类型为 "Unsigned TINYINT(3)" 的字段。我发现可以对 define the type of a column as an unsigned int 执行以下操作:
private long foo;
@Column(columnDefinition = "UNSIGNED INT(11)")
public long getFoo()
{
return foo;
}
我正在尝试创建一个字段,如下所示:
@Size(max = 3)
@Column(name = "WorkingHours", columnDefinition="UNSIGNED TINYINT(3) default '40'")
private Integer workingHours;
我在将我的项目部署到我的服务器时收到以下错误:
{"JBAS014671: Failed services" => {"jboss.persistenceunit.\"my-project.ear/my-project-ejb.jar#old-db\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"my-project.ear/my-project-ejb.jar#old-db\": javax.persistence.PersistenceException: Unable to execute JPA schema generation create command [create table ... etc.]
Caused by: javax.persistence.PersistenceException: Unable to execute JPA schema generation create command [create table ... etc.]
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNSIGNED TINYINT(3), ... etc.' at line 1"}}
但是,如果我从我的 columnDefinition
中删除 "UNSIGNED"(所以该行变为 columnDefinition="TINYINT(3) default '40'"
) 我的项目部署成功。所以看起来 "UNSIGNED" 没有被识别。
所以我的问题是:如何将我的列(字段)定义为无符号 TINYINT?
我不确定它是否重要,但我的 persistence.xml 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="old-db" transaction-type="JTA">
<jta-data-source>java:/jboss/datasources/mySQL_pool_old</jta-data-source>
<properties>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
</properties>
</persistence-unit>
</persistence>
最佳答案
经过更多试验后,我找到了答案。
单词"UNSIGNED" 应该出现在"TINYINT" 之后而不是之前。该字段应定义如下:
@Size(max = 3)
@Column(name = "WorkingHours", columnDefinition="TINYINT(3) UNSIGNED default '40'")
private Integer workingHours;
我不确定这是为什么,我只是通过反复试验才发现的。也许其他人可以提供一个引用来解释为什么会这样。
关于java - 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26341084/
这个问题在这里已经有了答案: 关闭10年前. Possible Duplicate: MySql: Tinyint (2) vs tinyint(1) - Which difference? 有什么区
我知道 mysql 中的 bool 值是 tinyint (1)。 今天我看到一个表格,其中定义了一个整数,如 tinyint(2),以及其他如 int(4)、int(6) ... integer 和
我需要在 1 个表中存储 5 个 boolean 值。每个值都可以存储为 tinyint(4)。所以,有 5 个 tinyint(4)。我正在考虑将 5 个 boolean 值放入一个 tinyint
在 Ruby on Rails 中,迁移中的以下代码在 MySQL 中创建了 tinyint(4) 类型的列: create_table :great_table do |t| t.integ
我想将 mysql 列从我用作 bool 值的tinyint(1) 转换为时间戳,但是我想通过在 true 时将日期插入到行中来保留现有数据。 那么我可以在考虑现有数据的同时更改表列吗? 我可以通过添
我正在尝试使用 Dapper 将数据库从 MySQL 迁移到 SQLServer。 除了 TinyInt 字段之外,几乎一切都很好。 无论我在 C# 代码中指定什么类型,Dapper 都会系统地抛出异
MySQL在什么情况下会将类型转换为TINYINT?我知道 mysql DDL 中的 BOOL 或 BOOLEAN 类型将自动转换为 TINYINT(1) for for true or false。
以下查询是否是转换字段数据类型的可接受方式? UPDATE INFORMATION_SCHEMA.COLUMNS SET `COLUMNS`.`DATA_TYPE` = 'tinyint' WHERE
我只是想知道。是否有可能在 Fluent API 或任何东西中将 Enum 类型映射为 tinyint? 比如说, public enum PaperType { Rough=1, Smoot
我尝试写入 t=t|128 但出现了超出范围的错误。我怀疑 tinyint 已签名。 但是http://dev.mysql.com/doc/refman/5.5/en/numeric-types.ht
我有一个包含五个 tinyint 列的表。 如果我查询一行,我会得到这样的结果: select flag1, flag2, flag3, flag4, flag5 from mytable where
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我正在尝试将 tinyint 字段的值设置为 1、2 或 3,但未设置。我是 mySQL 的新手,所以我可能在某个地方犯了错误,但我看不到它。 我调用了该函数,并且正在设置所有其他字段,只是不是 ti
我对 MySQL Documentation 有点困惑满足各个领域的存储需求。我目前正在重新设计数据库,并且我看到 TINYINT(4) 作为它们的数据类型。以前我从未考虑过这一点,但这是否需要一个字
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我这辈子都无法让 php 更新 mysql 中的 schdl 字段。它将更新测试查询中除 schdl 之外的所有其他字段。 schdl 值当前设置为 1,我正在尝试将其设置为 0。 schdl 字段的
我正在执行一个 select 语句,试图查找列 inactive 未设置为 1 的数据,但结果始终为 Empty Set。为什么会这样? mysql> select id, time, num, i
在 MySQL 数据库中,我有一个包含用户地址的表: CREATE TABLE `user_address` ( `id` INT(10) NOT NULL AUTO_INCREMENT,
我想更新状态值 -tinyint(1)- 以激活和停用用户。每当我尝试更新时,我都会收到下面设置为“助理更新失败”的消息。任何帮助都很感激。谢谢 if (empty($errors)) { // Pe
我有一个用状态标志定义的 mysql 表(它是一个 tinyint(1))。但是,当我尝试检查该值是真还是假时,我似乎得出了错误的结果。也就是说,它不会将该值视为合法的 true 或值,而是测试它是否
我是一名优秀的程序员,十分优秀!