在按照Nutz Dao Hello World敲代码时,遇到如下问题。
使用的数据库是:Oracle,Oracle没有自增字段,如果为主键直接注释@Id,当插入数据时,会抛出异常,
告诉我们不能为主键插入NULL值。
要为主键赋值需要变通的解决办法:
1.使用@Prev代替@Id
以类Person(主键Person_ID)及对应表tbl_Person为例
步骤:
(1)为表创建对应序列:SEQ_Person;
(2)为字段添加注释:@Prev(@SQL("select SEQ_PERSON.NEXTVAL from dual"))
具体代码如下:
@Table("TBL_PERSON") //声明了Person对象的数据表
public class Person {
/**
* (1)Oracle的字段没有自增的特性,使用Prev注释,在插入数据前查询序列,然后为表ID赋值
* (2)不能使用Next,因为估计Next是先附上默认值(int/long:0,Integer/Long:null等等),插入数据库后再更新,但是主键不允许为NULL及重复
*/
@Column // 表示该对象属性可以映射到数据库里作为一个字段
@Prev(@SQL("select SEQ_PERSON.NEXTVAL from dual"))
private Long Person_ID;
//其他
}
2.仍然使用@Id,同时在数据库端为主键创建触发器
以类Student(主键Student_ID)及对应表tbl_Student为例
(1)主键使用@Id注释;
(2)创建表tbl_Student的序列SEQ_Student
(2)为表tbl_Student的主键创建一个复制触发器
具体代码如下:
@Table("TBL_STUDENT")
public class Student {
/**
* 通过触发器,在插入数据时先为ID复制,模拟@Prev的效果
*/
@Column
@Id
private Long Student_ID;
//.........
}
在数据库端为主键创建触发器,
以下是Oracle数据库触发器SQL:
create or replace trigger trigger_Insert_Student_PK
before insert on TBL_STUDENT for each row
begin
if :new.Student_ID is null then
select SEQ_STUDENT.nextval into :new.Student_ID from dual;
end if;
end;
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Nutz框架创建一个简单的MVC(Model-View-Controller)应用程序,以“HelloWorld”为例。Nutz是一个轻量级的Java开发框架,它提供了全面的MVC支持,使得开发者能够高效地构建Web应用...
【标题】:“nutz初使用之MVC HelloWorld (netbeans html,js版)” 这篇教程主要介绍了如何在NetBeans环境中,结合HTML、JavaScript,利用Nutz框架构建一个简单的MVC模式的“Hello, World”应用。Nutz是一个轻量级...
return "Hello, Nutz!"; } } ``` 3. **配置路由(Routing)**: Nutz使用自动扫描机制找到所有控制器,并根据注解定义的URL映射。你可以在`web.xml`或通过`@Routes`注解来配置路由规则。 4. **创建视图(View)**:...
Nutz是一个轻量级、全面且高效的Java开发框架,它提供了一系列工具和库,包括数据访问对象(DAO)、网络通信、JSON处理等。在描述中提到的“NULL”可能是博主在发布时未填写具体描述,所以我们主要通过标签和对Nutz...
Nutz框架由一系列子项目组成,包括Nutz IOC(依赖注入)、Nutz DAO(数据访问对象)、Nutz MVC(模型视图控制器)等,涵盖了Web开发的多个层面,旨在简化开发流程,提高开发效率。 在"nutz框架使用手册.zip"中,...
Nutz是一个轻量级、高性能的Java开发框架,它提供了丰富的功能,包括MVC、ORM、DAO、AOP、IOC等,使得Java开发者能够快速地构建应用系统。本篇文章将详细探讨Nutz框架中所需的jar包以及它们在项目中的作用。 首先,...
首先,Nutz的核心组件Nutz DAO(Data Access Object)提供了与数据库交互的能力。通过简单的API,开发者可以轻松地实现对数据库的读写操作。在开始之前,确保已经在项目中正确地引入了Nutz的相关依赖。 1. **创建...
3. **Nutz DAO**:DAO(Data Access Object)层负责与数据库交互。Nutz DAO提供了简单易用的API,用于执行SQL查询、事务管理等操作,支持多种数据库类型,如MySQL、Oracle、PostgreSQL等。 4. **依赖注入(IoC)**...
import org.nutz.dao.Dao; import org.nutz.dao.DaoFactory; public class Main { public static void main(String[] args) { Dao dao = DaoFactory.create("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:...
这样,你可以在Service类中直接调用 Dao 的方法,无需手动创建 Dao 实例。 ```java @Service public class UserService { @Autowired private Dao dao; public void addUser(User user) { dao.insert(user); ...
import org.nutz.dao.Dao; import org.nutz.integration.jedis.JedisHolder; public class RedisExample { @Inject protected Dao dao; @Inject protected JedisHolder jedisHolder; public void ...
在Nutz框架下,开发者可以使用Nutz插件轻松实现DAO,通过简单的注解就能完成CRUD(创建、读取、更新、删除)操作。 在这个实例中,开发者可能创建了一个简单的HTML页面,用户可以通过这个页面提交表单,然后这些...
数据库访问层 -- Nutz.Dao 反转注入支持 -- Nutz.Ioc Mvc 框架 -- Nutz.Mvc Json 解析器 -- Nutz.Json 更多的简化Java语法的函数和类 -- Nutz.Lang 以及 Nutz.Castors 不依赖任何第三方 Jar 包,从而便于程序员建立...
Nutz Codematic则进一步扩展了Nutz的功能,为开发者提供了一个自动化生成数据访问层(DAO)和实体类(Bean)的解决方案。 在使用Nutz Codematic时,首先你需要配置数据库连接信息,包括数据库类型(如MySQL、Oracle...
Spring 里采用 Nutz.Dao ,又比如在 Nutz.Ioc 里使用 Hibernate 等整 -- 它所有功能均不依赖第三方 jar 文件。这就意味着:如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了当然你要使用其它...
return "Hello, Nutz MVC!"; } } ``` 5. **配置视图路径**:在应用配置中指定视图解析路径,例如: ```java @Configure public class AppConfig { @View("templates/**") public String viewPath() { ...
Nutz 是一个轻量级的Java框架,它集成了MVC、ORM、DAO、AOP、IOC等核心功能,适用于构建各种类型的Web应用。Nutz的设计理念是简洁实用,它提供了丰富的API和工具,让开发者能更高效地进行开发工作。 2. **Nutz-1.r...
如果你觉得 Hibernate 控制比较繁琐,iBatis 编写SQL又比较麻烦,Nutz.Dao 专为你设计。 如果你觉得在多个服务器部署或者修改 Spring 配置文件很麻烦,Nutz.Ioc 专为你设计 如果你觉得直接写 XML 配置文件很麻烦,...
在“Hello world”部分,开发者需要确保有JDK1.5及以上版本,并根据需求选择JDK5或JDK6版本的Nutz.jar。Log4J日志库虽然不是必需的,但推荐使用。此外,还需要一个数据库(如MySQL、PostgreSQL等)以及对应的JDBC...