NutzCN Logo
问答 关于Nutz一对多的配置,怎么弄,求教
发布于 2747天前 作者 qq_b61182f1 2390 次浏览 复制 上一个帖子 下一个帖子
标签:

一对多,我模拟的是一个员工有多个任务。
以下是员工Employee 和任务Task类的代码

package net.wendal.nutzbook.bean;

import java.util.Date;

import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.One;
import org.nutz.dao.entity.annotation.Table;

@Table("t_task")
public class Task {
	@Id
	private int id;
	@Column
	private String taskName;
	@Column
	private Date createTime;
	@One(target=Employee.class,field="taskId")
	private Employee emp;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTaskName() {
		return taskName;
	}
	public void setTaskName(String taskName) {
		this.taskName = taskName;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	public Employee getEmp() {
		return emp;
	}
	public void setEmp(Employee emp) {
		this.emp = emp;
	}
		
}

package net.wendal.nutzbook.bean;

import java.util.List;

import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.Many;
import org.nutz.dao.entity.annotation.Table;

@Table("t_emp")
public class Employee {
	@Id
	private int id;
	@Column
	private String empName;
	@Column
	private String address;
	@Column
	private int age;
	
	@Many(target=Task.class,field="taskId")
	private List<Task> tasks;
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getEmpName() {
		return empName;
	}

	public void setEmpName(String empName) {
		this.empName = empName;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public List<Task> getTasks() {
		return tasks;
	}

	public void setTasks(List<Task> tasks) {
		this.tasks = tasks;
	}
	
	
}

服务器启动的时候报错信息如下:

SEVERE: Exception starting filter nutz
org.nutz.mvc.LoadingException: java.lang.RuntimeException: Invalid @One(field=taskId) 'emp' : class net.wendal.nutzbook.bean.Task<=>class net.wendal.nutzbook.bean.Employee
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
	at org.nutz.lang.born.ConstructorBorning.born(ConstructorBorning.java:17)
	at org.nutz.lang.born.BornContext.doBorn(BornContext.java:60)
	at org.nutz.lang.Mirror.born(Mirror.java:990)
	at org.nutz.lang.Lang.wrapThrow(Lang.java:198)
	at org.nutz.mvc.impl.NutLoading.load(NutLoading.java:135)
	at org.nutz.mvc.ActionHandler.<init>(ActionHandler.java:19)
	at org.nutz.mvc.NutFilter._init(NutFilter.java:87)
	at org.nutz.mvc.NutFilter.init(NutFilter.java:65)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4562)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5240)
	at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5235)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:722)
6 回复

taskId是什么鬼?没看到这个属性

@wendal field=“”,这里面填什么,我还是比较模糊,我两边写filed="id",生成的表结构没有外键,求教

@qq_b61182f1 内置的建表功能是不会生成外键的.

@wendal不自动生成表结构,为什么还要配置这么多@Table @Id,@Column 注解,开发的时候是自己建表么?,我现在就是练习Nutz dao,请问,如果我要练习关联关系,意思是自己先建好表来咯???? 我学Hibernate的时候都能自动建表

我没说不自动生成表结构, 我说的是不会生成外键!!!

@qq_b61182f1 Nutz 是哲学是:能帮你做好的事情尽量帮你做好,不太肯定是否能帮你做好的事情,不瞎掺和。

早年,我们认为建表这种事,属于低频操作,根本就没有支持,您自己写个SQL 想咋建咋建。生产上的数据表,一般不会由 ORM 来建,而是 DBA 手工建。

后来发现,在测试开发环境,频不是那么低,还是会可能执行建表操作的,尤其是做自动测试时。所以在 Dao 加了建表支持

但是外键什么的,实在觉得木有加的必要了,为了这种较低频的操作,会长出很多代码来处理各个数据库的方言,不太划算的

来自美丽的 NutzCN

添加回复
请先登陆
回到顶部