[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 メーリングリストの案内