关于用swt在columnheader中组合和swt怎么用的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于1074,"Columnlengthtoobigforcolumn''err_so
关于用swt在columnheader中组合和swt怎么用的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于1074, "Column length too big for column ''err_solution'' (max = 21845); use BLOB or TEXT instead"、@Column columnDefinition使哪些属性多余?、An explicit value for the identity column in table 'users' can only be specified when a column list、c# – DataGridColumnHeader中的第一个下划线被删除等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- 用swt在columnheader中组合(swt怎么用)
- 1074, "Column length too big for column ''err_solution'' (max = 21845); use BLOB or TEXT instead"
- @Column columnDefinition使哪些属性多余?
- An explicit value for the identity column in table 'users' can only be specified when a column list
- c# – DataGridColumnHeader中的第一个下划线被删除
用swt在columnheader中组合(swt怎么用)
我想要一个具有组合的表作为其列标题之一。我已经从这个问题中发现Table是不可能的:
列标题SWT中的控件(组合,广播,文本)
有办法解决吗?我尝试了TableViewer,但也没有找到使用它的方法。有什么办法可以实现?
答案1
小编典典您可以Composite
使用常规控件在表格上方的区域中创建自己的列标题。
然后,您将需要调整这些控件的大小以匹配表列的大小。一种方法是使用表布局类扩展jfaceTableColumnLayout
并覆盖setColumnWidths
每次列大小更改时调用的方法,因此您可以调整标题控件的宽度。
注意:TableColumnLayout需要Composite
仅在上包含,Table
而不是直接在上Table
。
所以这样的布局:
/** * Table column layout extended to manage a separate table header. */public class TableColumnLayoutWithSeparateHeader extends TableColumnLayout{ /** Header composite */ private final Composite _headerComposite; /** Right margin adjust */ private final int _rightMargin; /** * Constructor. * * @param headerComposite Header composite * @param rightMargin Right margin value */ public TableColumnLayoutWithSeparateHeader(final Composite headerComposite, final int rightMargin) { super(); _headerComposite = headerComposite; _rightMargin = rightMargin; } /** * {@inheritDoc} * @see org.eclipse.jface.layout.TableColumnLayout#setColumnWidths(org.eclipse.swt.widgets.Scrollable, int[]) */ @Override protected void setColumnWidths(final Scrollable tableTree, final int [] widths) { super.setColumnWidths(tableTree, widths); // Update the header composite final Control [] children = _headerComposite.getChildren(); final int size = Math.min(widths.length, children.length); for (int index = 0; index < size; ++index) { final GridData data = (GridData)children[index].getLayoutData(); int width = widths[index]; if (index == (size - 1)) width -= _rightMargin; data.widthHint = width; } _headerComposite.layout(); }}
1074, "Column length too big for column ''err_solution'' (max = 21845); use BLOB or TEXT instead"
一个注意点,就是sqlalchemy 使用create_all()建表的时候,要在 create_all()所在页面import那些表的model
sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1074, "Column length too big for column ''err_solution'' (max = 21845); use BLOB or TEXT instead") [SQL: u''\nCREATE TABLE amazon_errcode (\n\tcreate_date DATETIME, \n\tmodified_date DATETIME, \n\tid INTEGER NOT NULL AUTO_INCREMENT, \n\terr_code INTEGER, \n\terr_desc VARCHAR(1024), \n\terr_solution VARCHAR(65532), \n\tPRIMARY KEY (id)\n)\n\n'']
------------------2016-5-17 17:30:23--
source:mysql中的char text blob
@Column columnDefinition使哪些属性多余?
我经常这样指定我的@Column
注释:
@Column(columnDefinition="character varying (100) not null",length=100,nullable=false)
如您所见length
,nullable
即使columnDefinition
已经指定了,我也指定了。那是因为我不知道这些值的确切位置/时间。
因此,在指定时columnDefinition
,的其他哪些属性@Column
将变得多余?
如果有关系,我可以使用Hibernate和PostgreSQL
答案1
小编典典我的回答:应重写以下所有内容(即在columndefinition
适当的情况下,全部描述):
length
precision
scale
nullable
unique
也就是说,列DDL将包含:name
+ columndefinition
和其他所有内容 。
基本原理如下。
包含单词“ Column”或“ Table”的注释纯粹是物理的-属性 仅 用于根据数据库控制DDL / DML。
其他纯逻辑注释-在Java内存中用于控制JPA处理的属性。
这就是为什么有时会出现两次将可选性/可空性设置的原因-一次通过
@Basic(...,optional=true)
和一次通过@Column(...,nullable=true)
。前者说,在刷新时,JPA对象模型(内存中)的属性/关联可以为空;后者表示DB列可以为null。通常,您希望它们设置相同- 但并非总是如此 ,这取决于数据库表的设置和重用方式。
在您的示例中,length和nullable属性被覆盖和冗余。
因此,当指定columnDefinition时,@Column的其他哪些属性将变得多余?
在JPA Spec和javadoc中:
columnDefinition
定义: 生成列的DDL时使用的SQL片段。columnDefinition
默认值: 生成的SQL以创建推断类型的列。提供以下示例:
@Column(name="DESC", columnDefinition="CLOB NOT NULL", table="EMP_DETAIL")
@Column(name=”EMP_PIC”, columnDefinition=”BLOB NOT NULL”)
而且,嗯…就是这样。:-$?!
columnDefinition是否会覆盖同一批注中提供的其他属性?
Javadoc和JPA规范未明确解决此问题-规范没有提供很好的保护。要100%确定,请使用您选择的实现进行测试。
从JPA规范中提供的示例可以安全地暗示以下内容
name
&table
可以与结合使用columnDefinition
,都不会被覆盖nullable
被…覆盖/使其冗余columnDefinition
从“情境逻辑”中可以很安全地隐含以下内容(我只是说那句话?? :-P):
length
,precision
,scale
是覆盖/冗余由columnDefinition
-它们是一体的类型insertable
和updateable
分别提供,并且从不包含在内columnDefinition
,因为它们在将SQL生成数据库之前控制它们在内存中的生成。- 剩下的只是“
unique
”属性。它类似于nullable-扩展/限定类型定义,因此应将其视为类型定义的组成部分。即应该被覆盖。
测试我的答案分别 对列“ A”和“ B”:
@Column(name="...", table="...", insertable=true, updateable=false, columndefinition="NUMBER(5,2) NOT NULL UNIQUE" @Column(name="...", table="...", insertable=false, updateable=true, columndefinition="NVARCHAR2(100) NULL"
- 确认生成的表具有正确的类型/可空性/唯一性
- (可选)执行JPA插入和更新:前者应包含A列,后一列B
An explicit value for the identity column in table 'users' can only be specified when a column list
eclipse中tomcat console提示如下:
An explicit value for the identity column in table ''users'' can only be specified when a column list is used and IDENTITY_INSERT is ON.
users中的字段有:userid,username,passwd,grade
原始:
String sqlUpdate="insert into users values (null,?,?)";
数据库为sqlserver2008R2
由于users中的userid设置为自动增长,所以不需要在插入时设置该值,修改为:
String sqlUpdate="insert into users values (?,?)";
c# – DataGridColumnHeader中的第一个下划线被删除
我可以通过C#方式(通过某种方式找到ContentPresenter来修改RecognisedAccessKey属性)或通过修改XAML(找出保留默认样式的方式)来解决问题.
我的XAML看起来像这样:
<Style x:Key="DataGridColumnHeaderStyle" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}" targettype="{x:Type DataGridColumnHeader}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate targettype="DataGridColumnHeader"> <Border> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="False" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>
谢谢!
解决方法
另一种方法可以在this question的公认答案中找到
关于用swt在columnheader中组合和swt怎么用的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于1074, "Column length too big for column ''err_solution'' (max = 21845); use BLOB or TEXT instead"、@Column columnDefinition使哪些属性多余?、An explicit value for the identity column in table 'users' can only be specified when a column list、c# – DataGridColumnHeader中的第一个下划线被删除的相关知识,请在本站寻找。
本文标签: