Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 整型字段的空值_Java_Oracle_Entity_Spring Data Neo4j - Fatal编程技术网

Java 整型字段的空值

Java 整型字段的空值,java,oracle,entity,spring-data-neo4j,Java,Oracle,Entity,Spring Data Neo4j,我有一个实体类,它有一个int字段,在表中cloumn类型是Number(10,0)。在表中,默认值为“NULL”。使用SpringDataJPA当我尝试使用JPA选择查询时,我得到以下错误 java.lang.IllegalArgumentException: Can not set int field com.test.app.entity.TestProject.baseUserIdNumber to null value 我无法更改表中的任何内容,因为这已在生产中创建和使用。我能用实体

我有一个实体类,它有一个int字段,在表中cloumn类型是Number(10,0)。在表中,默认值为“NULL”。使用SpringDataJPA当我尝试使用JPA选择查询时,我得到以下错误

java.lang.IllegalArgumentException: Can not set int field com.test.app.entity.TestProject.baseUserIdNumber to null value
我无法更改表中的任何内容,因为这已在生产中创建和使用。我能用实体类或JPQL做什么

@Entity
public class TestProject {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int projectId;
    private String description;
    private String name;
    private int seqNumber
    private LocalDate startDateTime;
    private LocalDate endDateTime;
    @Column(name = "baseUserIdNumber")
    private int myfield;
    private String projStatus;



constructors ()
getters()
Setters()


}

您可以使用默认值定义字段,并将其定义为int而不是Integer,这样它就不会接受NULL值

@Column(name=“my_Column”)
私有int myField=0;

您可以使用默认值定义字段,并将其定义为int而不是Integer,这样它就不会接受空值

@Column(name=“my_Column”)
私有int myField=0;

你所描述的有些奇怪

  • 有一张桌子
  • 它有一个数据类型为
    number(10,0)
  • 其默认值为
    null
    • 嗯,是的-如果没有指定,它实际上是
      null
  • 您执行的代码返回

    无法将(…)设置为空值

这根本没有道理。如果它的默认值是
null
,为什么不能将其设置为
null
?表不是被设置为非空吗

这是Oracle代码,但错误消息与您得到的类似:

SQL> create table test (id number(10, 0) not null, name varchar2(20));

Table created.

SQL> insert into test
  2    select 1, 'Little' from dual union all
  3    select 2, 'Foot'   from dual;

2 rows created.

SQL> update test set id = null where id = 1;
update test set id = null where id = 1
                *
ERROR at line 1:
ORA-01407: cannot update ("SCOTT"."TEST"."ID") to NULL

由于您无法对该表执行任何操作(因为它在生产中使用),您所能做的就是尝试将其设置为
null
(无论您使用哪种工具或语言)。

您所描述的内容有些奇怪

  • 有一张桌子
  • 它有一个数据类型为
    number(10,0)
  • 其默认值为
    null
    • 嗯,是的-如果没有指定,它实际上是
      null
  • 您执行的代码返回

    无法将(…)设置为空值

这根本没有道理。如果它的默认值是
null
,为什么不能将其设置为
null
?表不是被设置为非空吗

这是Oracle代码,但错误消息与您得到的类似:

SQL> create table test (id number(10, 0) not null, name varchar2(20));

Table created.

SQL> insert into test
  2    select 1, 'Little' from dual union all
  3    select 2, 'Foot'   from dual;

2 rows created.

SQL> update test set id = null where id = 1;
update test set id = null where id = 1
                *
ERROR at line 1:
ORA-01407: cannot update ("SCOTT"."TEST"."ID") to NULL


由于您无法对该表执行任何操作(因为它在生产中使用),您所能做的就是尝试将其设置为
null
(无论您使用哪种工具或语言)。

它为什么不起作用?然后用代表表的整个类更新主帖子。确定。我会的,我把myField的数据类型改成了BigDecimal,它成功了。由于表属性将字段的数据类型显示为数字(10,0),我只是猜测这可能是一个十进制字段。当我将int改为BigDecimal时,效果很好。如果我能在这里使用int,这会很有帮助。如果你希望/需要一个空值,你可以使用Integer而不是int。为什么它不起作用?然后用代表表的整个类更新主帖子。确定。我会的,我把myField的数据类型改成了BigDecimal,它成功了。由于表属性将字段的数据类型显示为数字(10,0),我只是猜测这可能是一个十进制字段。当我将int改为BigDecimal时,效果很好。如果我能在这里使用int,这将很有帮助。如果您希望/需要一个空值,您可能可以使用Integer而不是int。我在尝试从表中获取数据时遇到了错误。表中该特定字段的值为空。Null值被分配给primitive int。这可能是问题所在吗?在您的示例中,您将字段设置为not Null。在我的例子中,默认值是null。Fetch?哦对我来说,它看起来像是更新/插入。作为我的例子:是的,这就是我在阅读你描述的问题时的想法;你说过它和BigDecimal一起工作。你不能继续用它吗?不幸的是,我不懂Java,所以我对此无能为力。当我试图从表中获取数据时,我遇到了错误。表中该特定字段的值为空。Null值被分配给primitive int。这可能是问题所在吗?在您的示例中,您将字段设置为not Null。在我的例子中,默认值是null。Fetch?哦对我来说,它看起来像是更新/插入。作为我的例子:是的,这就是我在阅读你描述的问题时的想法;你说过它和BigDecimal一起工作。你不能继续用它吗?不幸的是,我不懂Java,所以在这方面我帮不了多少忙。