[Seasar-user:4707] S2Dao tigerの@Columnについて
Junichi Kato
[E-MAIL ADDRESS DELETED]
2006年 9月 26日 (火) 11:38:23 JST
加藤です。
S2Dao 1.0.35で、フィールドアノテーションを利用していたのですが、
S2Dao tiger 1.0.35で、Tigerのアノテーションで書き換えを行っています。
以下のようなDaoを作成しております。
私の記述がおかしいのか、_IDのサフィックスがつくカラムが2つ以上あると、
@Columnが指定どおり動作してくれません。(フィールドアノテーションなら
問題ありません)
具体的には@Columnを指定したImageFileをinsertするとESSR0068が発生します。
DEBUG 2006-09-26 10:34:09,317 [main] END hoge.dao.ImageFileDao#insert([E-MAIL ADDRESS DELETED])
Throwable:org.seasar.extension.jdbc.ColumnNotFoundRuntimeException: [ESSR0068]テーブル(image_file)のカラム(imageId)が見つかりません
アノテーションの記述的に問題となる箇所はありますでしょうか?
よろしくお願いいたします。
環境
- S2Dao 1.0.35
dao.diconはS2Pagerを利用する前提になっております。
- RDBMS
MySQL5
@Bean(table="image_file")
public class ImageFile implements Serializable {
private static final long serialVersionUID = 3716735624269445767L;
/*
public static final String TABLE = "image_file";
public static final String imageId_ID = "identity";
public static final String imageId_COLUMN = "image_id";
public static final String entryId_COLUMN = "entry_id";
*/
private long imageId;
private long entryId;
private String name;
private String contentType;
private byte[] image;
private long fileSize;
private int width;
private int height;
private Timestamp createDate;
private Timestamp updateDate;
@Column("image_id")
public long getImageId() {
return imageId;
}
@Column("image_id")
@Id(value = IdType.IDENTITY)
public void setImageId(long imageId) {
this.imageId = imageId;
}
@Column("entry_id")
public long getEntryId() {
return entryId;
}
@Column("entry_id")
public void setEntryId(long entryId) {
this.entryId = entryId;
}
public String getContentType() {
return contentType;
}
public void setContentType(String contentType) {
this.contentType = contentType;
}
public byte[] getImage() {
return image;
}
public void setImage(byte[] image) {
this.image = image;
} public Timestamp getCreateDate() {
return createDate;
}
public void setCreateDate(Timestamp createDate) {
this.createDate = createDate;
}
public long getFileSize() {
return fileSize;
}
public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Timestamp getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Timestamp updateDate) {
this.updateDate = updateDate;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
}
@S2Dao(bean=ImageFile.class)
public interface ImageFileDao {
/*
public static final Class BEAN = ImageFile.class;
*/
@Arguments("imageId")
public ImageFile getImageFileByImageId(long imageId);
public int insert(ImageFile imageFile);
public int update(ImageFile imageFile);
public int delete(ImageFile imageFile);
}
CREATE TABLE `image_file` (
`image_Id` bigint(20) unsigned NOT NULL auto_increment,
`entry_id` bigint(20) unsigned default NULL,
`name` varchar(255) default NULL,
`content_type` varchar(255) default NULL,
`image` longblob NOT NULL,
`size` bigint(20) unsigned default NULL,
`width` int(11) default NULL,
`height` int(11) default NULL,
`create_date` timestamp NULL default NULL,
`update_date` timestamp NULL default NULL,
PRIMARY KEY (`image_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components namespace="dao">
<include path="j2ee.dicon"/>
<!--
<component name="annotationReaderFactory"
class="org.seasar.dao.annotation.tiger.impl.AnnotationReaderFactoryImpl"/>
-->
<component name="annotationReaderFactory"
class="org.seasar.dao.impl.FieldAnnotationReaderFactory"/>
<component
name="resultSetFactory"
class="org.seasar.dao.pager.PagerResultSetFactoryWrapper">
<arg>
<component class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
</arg>
<property name="useScrollCursor">true</property>
</component>
<component
class="org.seasar.dao.impl.DaoMetaDataFactoryImpl">
<arg>j2ee.dataSource</arg>
<arg>
<component class="org.seasar.dao.pager.PagerStatementFactory"/>
</arg>
<arg>resultSetFactory</arg>
<arg>annotationReaderFactory</arg>
</component>
<component name="interceptor"
class="org.seasar.dao.pager.PagerS2DaoInterceptorWrapper">
<arg>
<component name="s2dao"
class="org.seasar.dao.interceptors.S2DaoInterceptor">
</component>
</arg>
</component>
</components>
───────────────────────────────
有限会社 グランテック
代表取締役
加藤 潤一 Junichi Kato
〒150-0011 東京都渋谷区東1-23-4
TEL : 03-3498-2011
FAX : 03-3498-2012
Mobile : 090-7238-6314
[E-MAIL ADDRESS DELETED] http://www.grandtech.jp/
Seasar-user メーリングリストの案内