level 1
composite模式中如果我要以树状展示某部门部门下又有子部门这个在hibernate中该怎么映射我试着直接在域变量中加入一个变量parent 类型为自身但是映射时它报错说无法解析的类型我通过手工编码的方式算是解决了这个问题 但是觉得这样设计不是太科学 不知道hibernate中是否专门有方法支持这种映射 劳烦赐教
2008年03月09日 01点03分
1
level 1
package shadowingfly;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.OneToMany;import javax.persistence.Transient;@Entitypublic class Department {private int id;private Department parent; private Set
children; //通过Set将下级加入该实体private String name;private boolean isRoot;private String description;// 备注public Department() {}@OneToMany(cascade = CascadeType.ALL,mappedBy ="parent" )public Set
getChildren() {return children;}public void setChildren(Set
children) {this.children = children;}@Id@GeneratedValue(strategy = GenerationType.TABLE)public int getId() {return id;}public void setId(int id) {this.id = id;}@ManyToOne@JoinColumnpublic Department getParent() {return parent;} public void setParent(Department parent){this.parent = parent;}public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean isRoot() {return isRoot;}public void setRoot(boolean isRoot) {this.isRoot = isRoot;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}@Transientpublic boolean isTransient() {return getId() < 1;}}
2008年03月09日 02点03分
4
level 1
新问题 在多对多映射生成的关系表中能否自定义几个表示状态的字段比如 某客户购买某种类商品数量 以及付款时间等如果不能 有什么比较好的替代方案
2008年03月09日 02点03分
5
level 1
SQL当然没问题...问题是现在多对多的关系表是H自动生成的...这个表只有两个外键分别引用多对多的两个关系对象我现在想让他多生成几个字段用来储存一些状态信息..
2008年03月09日 02点03分
7
level 1
搞定了...用了几个不符合JPA规范的MAP映射..package shadowingfly;import java.util.List;import java.util.Map;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.ManyToMany;import javax.persistence.OneToOne;import javax.persistence.Transient;import org.hibernate.annotations.MapKeyManyToMany;@Entitypublic class Part {private int id;private Cloth cloth;private String name;private int price;private Map
emps; public Part(Cloth cloth, String name, int price,Map
emps) {super();this.cloth = cloth;this.name = name;this.price = price;this.emps=emps;}public Part() {} @Id@GeneratedValue(strategy = GenerationType.TABLE) public int getId() {return id;}public void setId(int id) {this.id = id;}@OneToOne(cascade = CascadeType.ALL) public Cloth getCloth() {return cloth;}public void setCloth(Cloth cloth) {this.cloth = cloth;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}@MapKeyManyToManypublic Map
getEmps() {return emps;}public void setEmps(Map
emps) {this.emps = emps;}@Transient public boolean isTransient() { return getId() < 1; }}
2008年03月09日 03点03分
9
level 1
package shadowingfly;import java.util.Date;import java.util.Map;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Transient;import org.hibernate.annotations.MapKeyManyToMany;@Entitypublic class Employee {private int id;private Department dep;// 部门private String name;// 姓名private Date birthday; // 生日private String gender;// 性别private String address;// 地址private String phone;// 电话private String state;// 状态 进厂/炒更/请假private int basicWage;// 基本工资private Date datecode;// 入厂日期private String description;// 备注private Map
parts; //此员工完成的工序public Employee(Department dep, String name, Date birthday, String gender,String address, String phone, String state, int basicWage,Date datecode, String description,Map
parts) {super(); this.dep = dep;this.name = name;this.birthday = birthday;this.gender = gender;this.address = address;this.phone = phone;this.state = state;this.basicWage = basicWage;this.datecode = datecode;this.description = description;this.parts=parts;}public Employee() {super();}@Id@GeneratedValue(strategy = GenerationType.TABLE)public int getId() {return id;}public void setId(int id) {this.id = id;}@ManyToOne(cascade = CascadeType.ALL)@JoinColumnpublic Department getDep() {return dep;}public void setDep(Department dep) {this.dep = dep;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getState() {return state;}public void setState(String state) {this.state = state;}public int getBasicWage() {return basicWage;}public void setBasicWage(int basicWage) {this.basicWage = basicWage;}public Date getDatecode() {return datecode;}public void setDatecode(Date datecode) {this.datecode = datecode;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;} @MapKeyManyToManypublic Map
getParts() {return parts;}public void setParts(Map
parts) {this.parts = parts;}@Transientpublic boolean isTransient() {return getId() < 1;}}
2008年03月09日 03点03分
10
level 1
package shadowingfly;import java.util.Date;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class StateVO {private int id; private String state; private int amount; private Date paytime;public StateVO( String state, int amount, Date paytime) {super();this.state = state;this.amount = amount;this.paytime = paytime;}public StateVO() {}@Id@GeneratedValue(strategy = GenerationType.TABLE)public int getId() {return id;}public void setId(int id) {this.id = id;}public String getState() {return state;}public void setState(String state) {this.state = state;}public int getAmount() {return amount;}public void setAmount(int amount) {this.amount = amount;}public Date getPaytime() {return paytime;}public void setPaytime(Date paytime) {this.paytime = paytime;}}
2008年03月09日 03点03分
11