我用SQL server 2008建了三个表,其中VoteTheme的主键作为VoteOption的外键,
现在新建一个VoteTheme,再新建2个VoteOption并通过setter方法使得2个VoteOption的集合成为前面新建的VoteTheme的set集合属性,如果保存VoteTheme对象的话,则会出现如下错误:
Hibernate: select member0_.ID as ID0_0_, member0_.MemberName as MemberName0_0_, member0_.Pwd as Pwd0_0_, member0_.Sex as Sex0_0_, member0_.MailBox as MailBox0_0_, member0_.MemberType as MemberType0_0_ from VotingSystem.dbo.Member member0_ where member0_.ID=?
Hibernate: insert into VotingSystem.dbo.VoteTheme (ThemeName, ThemeContent, ThemeStatus, Creator) values (?, ?, ?, ?)
Hibernate: insert into VotingSystem.dbo.VoteOption (OptionName, OptionContent, themeID) values (?, ?, ?)
2013-5-4 15:51:52 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 515, SQLState: 23000
2013-5-4 15:51:52 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: 不能将值 NULL 插入列 'ThemeID',表 'VotingSystem.dbo.VoteOption';列不允许有 Null 值。INSERT 失败。数据库:
create table Member(
ID int identity(1000,1) primary key,
MemberName varchar(20) not null,
Pwd varchar(20) not null,
Sex varchar(2) not null,
MailBox varchar(32) not null,
MemberType varchar(6) default 'normal' not null check (MemberType in ('normal','admin'))
);
create table VoteTheme(
ThemeID int identity(1000,1) primary key,
ThemeName varchar(50) not null,
ThemeContent varchar(200) not null,
Creator int not null,
ThemeStatus int default 0 not null,
foreign key (Creator) references Member(ID)
);
create table VoteOption(
OptionID int identity(10000,1) primary key,
OptionName varchar(50) not null,
OptionContent varchar(200) not null,
ThemeID int not null,
Votes int default 0 not null
foreign key (ThemeID) references VoteTheme(ThemeID)
);VoteTheme类:
public class VoteTheme {
private int themeID;
private String themeName;
private String themeContent;
private Member member;
private int themeStatus;
private Set<VoteOption> options = new HashSet<VoteOption>();
//省略构造和getter、setter方法配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>
<class name="vote.entity.VoteTheme" table="VoteTheme" catalog="VotingSystem"
schema="dbo">
<id name="themeID" type="java.lang.Integer">
<column name="ThemeID"></column>
<generator class="native"></generator>
</id>
<property name="themeName" type="java.lang.String">
<column name="ThemeName" length="50"></column>
</property>
<property name="themeContent" type="java.lang.String">
<column name="ThemeContent" length="200"></column>
</property>
<property name="themeStatus" type="java.lang.Integer">
<column name="ThemeStatus"></column>
</property>
<many-to-one name="member" column="Creator"></many-to-one>
<set name="options" table="VoteOption" cascade="save-update" fetch="select" >
<key>
<column name="ThemeID" not-null="true"></column>
</key>
<one-to-many class="vote.entity.VoteOption" />
</set>
</class>
</hibernate-mapping>VoteOption类:
public class VoteOption {
private int optionID;
private String optionName;
private String optionContent;
private VoteTheme voteTheme;
private int votes;
//省略构造和getter、setter方法<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>
<class name="vote.entity.VoteOption" table="VoteOption"
catalog="VotingSystem" schema="dbo">
<id name="optionID" type="java.lang.Integer">
<column name="OptionID"></column>
<generator class="native"></generator>
</id>
<property name="optionName" type="java.lang.String">
<column name="OptionName" length="50"></column>
</property>
<property name="optionContent" type="java.lang.String">
<column name="OptionContent" length="200"></column>
</property>
<property name="votes" generated="insert" type="java.lang.Integer">
<column name="Votes"></column>
</property>
<many-to-one name="voteTheme" column="themeID"></many-to-one>
</class>
</hibernate-mapping>
现在新建一个VoteTheme,再新建2个VoteOption并通过setter方法使得2个VoteOption的集合成为前面新建的VoteTheme的set集合属性,如果保存VoteTheme对象的话,则会出现如下错误:
Hibernate: select member0_.ID as ID0_0_, member0_.MemberName as MemberName0_0_, member0_.Pwd as Pwd0_0_, member0_.Sex as Sex0_0_, member0_.MailBox as MailBox0_0_, member0_.MemberType as MemberType0_0_ from VotingSystem.dbo.Member member0_ where member0_.ID=?
Hibernate: insert into VotingSystem.dbo.VoteTheme (ThemeName, ThemeContent, ThemeStatus, Creator) values (?, ?, ?, ?)
Hibernate: insert into VotingSystem.dbo.VoteOption (OptionName, OptionContent, themeID) values (?, ?, ?)
2013-5-4 15:51:52 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 515, SQLState: 23000
2013-5-4 15:51:52 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: 不能将值 NULL 插入列 'ThemeID',表 'VotingSystem.dbo.VoteOption';列不允许有 Null 值。INSERT 失败。数据库:
create table Member(
ID int identity(1000,1) primary key,
MemberName varchar(20) not null,
Pwd varchar(20) not null,
Sex varchar(2) not null,
MailBox varchar(32) not null,
MemberType varchar(6) default 'normal' not null check (MemberType in ('normal','admin'))
);
create table VoteTheme(
ThemeID int identity(1000,1) primary key,
ThemeName varchar(50) not null,
ThemeContent varchar(200) not null,
Creator int not null,
ThemeStatus int default 0 not null,
foreign key (Creator) references Member(ID)
);
create table VoteOption(
OptionID int identity(10000,1) primary key,
OptionName varchar(50) not null,
OptionContent varchar(200) not null,
ThemeID int not null,
Votes int default 0 not null
foreign key (ThemeID) references VoteTheme(ThemeID)
);VoteTheme类:
public class VoteTheme {
private int themeID;
private String themeName;
private String themeContent;
private Member member;
private int themeStatus;
private Set<VoteOption> options = new HashSet<VoteOption>();
//省略构造和getter、setter方法配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>
<class name="vote.entity.VoteTheme" table="VoteTheme" catalog="VotingSystem"
schema="dbo">
<id name="themeID" type="java.lang.Integer">
<column name="ThemeID"></column>
<generator class="native"></generator>
</id>
<property name="themeName" type="java.lang.String">
<column name="ThemeName" length="50"></column>
</property>
<property name="themeContent" type="java.lang.String">
<column name="ThemeContent" length="200"></column>
</property>
<property name="themeStatus" type="java.lang.Integer">
<column name="ThemeStatus"></column>
</property>
<many-to-one name="member" column="Creator"></many-to-one>
<set name="options" table="VoteOption" cascade="save-update" fetch="select" >
<key>
<column name="ThemeID" not-null="true"></column>
</key>
<one-to-many class="vote.entity.VoteOption" />
</set>
</class>
</hibernate-mapping>VoteOption类:
public class VoteOption {
private int optionID;
private String optionName;
private String optionContent;
private VoteTheme voteTheme;
private int votes;
//省略构造和getter、setter方法<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>
<class name="vote.entity.VoteOption" table="VoteOption"
catalog="VotingSystem" schema="dbo">
<id name="optionID" type="java.lang.Integer">
<column name="OptionID"></column>
<generator class="native"></generator>
</id>
<property name="optionName" type="java.lang.String">
<column name="OptionName" length="50"></column>
</property>
<property name="optionContent" type="java.lang.String">
<column name="OptionContent" length="200"></column>
</property>
<property name="votes" generated="insert" type="java.lang.Integer">
<column name="Votes"></column>
</property>
<many-to-one name="voteTheme" column="themeID"></many-to-one>
</class>
</hibernate-mapping>
解决方案 »
- 多线程
- 我通过java mail已经将邮件发送成功了,可是不知为什么,我到邮箱里面看不见理应发来的东西
- <html:text/>标签
- MyEclipse5.0与weblogic8的配置问题(跪求帮助)
- hibernate初学者的问题?
- 急盼高手:struts1.2中ActionErrors的问题!
- 怎么样在struts中为<logic:iterate>生成的表的控件添加不同的名字。
- 请教如何配置jb7自带的EJB2例子?
- 出现org.springframework.jdbc.datasource.DriveManagerDataSource错误
- 武汉面试记录
- jquery如何监听img的src改变事件
- 请问java中元数据的使用?
hibernate首先是会插个空值给themeID,回头再更新
我只好改数据库了