我有一个文档实体多对一地映射到项目实体.
当我调用document.getProject
,在调试器中,在文档对象的项目字段中,我看到了一些东西Project$$EnhancerByCGLIB$$67a694bd
.
如何检索实际项目对象?
我有时会得到这个例外.我真的不知道哪里有问题,我使用了abstracttablemodel的实现.我无法找到发生异常的精确位置,因为当我使用调试器并逐步运行异常时不会发生.
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
at javax.swing.plaf.basic.BasicTableUI.paintGrid(BasicTableUI.java:1931)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1767)
at com.alee.laf.table.WebTableUI.paint(WebTableUI.java:52)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:752)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:862)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JViewport.paint(JViewport.java:747)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1225)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:786)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:694)
at javax.swing.RepaintManager.access$700(RepaintManager.java:41)
at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1636)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at …
Run Code Online (Sandbox Code Playgroud) 在纯Hibernate我可以做:
Blob blob= Hibernate.getLobCreator(sessionFactory.getCurrentSession()).createBlob(inputStream, len);
Run Code Online (Sandbox Code Playgroud)
如何在jpa中执行此操作(以hibernate作为提供程序)?
在纯hibernate中,我为blob创建了用户类型,它使用了setBinaryStream
预处理语句.这个解决方案对我很有用,我正在寻找一种方法将它移植到JPA.
我有一个Picture
:
public class Picture implements java.io.Serializable {
private byte[] picEncoded;
private String Name;
//etc
Run Code Online (Sandbox Code Playgroud)
是否可以移动byte[]
到另一个类而不在 db 中创建物理分隔的表?我需要使用一些继承策略吗?
编辑
单独实体中的 Blob:
pojo :
public class PictureBlob implements java.io.Serializable {
private Integer pictureBlobId;
private byte[] blob;
Run Code Online (Sandbox Code Playgroud)
hbm: :
<class name="PictureBlob" table="PICTURE">
<id name="pictureBlobId" type="int">
<column length="200" name="PictureID"/>
</id>
<property name="blob" type="byte[]" insert="false" update="false">
<column name="PicEncoded" not-null="false"/>
</property>
</class>
Run Code Online (Sandbox Code Playgroud)
图片:
hbm: :
<one-to-one class="PictureBlob" constrained="true" name="pictureBlob" fetch="select"/>
Run Code Online (Sandbox Code Playgroud)
如何插入新图片?
PictureBlob pictureBlob= new PictureBlob();
pictureBlob.setBlob(new byte[]{84,32,22});
Picture p = new Picture(); …
Run Code Online (Sandbox Code Playgroud) 我需要使用有限的内存使用来验证大xml .到目前为止我找到的每个代码都会出现内存错误.
方法我试过:
//method 1
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(true);
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
factory.setSchema(schemaFactory.newSchema(new Source[] {new StreamSource(Thread.currentThread().getContextClassLoader().getResource("xmlresource/XSD_final2.xsd").getFile())}));
SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(new SimpleErrorHandler());
reader.parse(new InputSource(inputXml));
//method2
XMLValidationSchemaFactory sf = XMLValidationSchemaFactory.newInstance(XMLValidationSchema.SCHEMA_ID_W3C_SCHEMA);
XMLValidationSchema vs = sf.createSchema(Thread.currentThread().getContextClassLoader().getResource("xmlresource/XSD_final2.xsd"));
XMLStreamReader2 sr = (XMLStreamReader2) XMLInputFactory2.newInstance().createXMLStreamReader(new FileInputStream(inputXml));
sr.validateAgainst(vs);
try {
while (sr.hasNext()) {
sr.next();
}
System.out.println("Validated ok!");
} catch (XMLValidationException ve) {
System.err.println("Validation problem: "+ve);
isValid = false;
}
sr.close();
Run Code Online (Sandbox Code Playgroud)
//方法3
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
String fileName = Thread.currentThread().getContextClassLoader().getResource("xmlresource/XSD_final2.xsd").getFile(); …
Run Code Online (Sandbox Code Playgroud) 我有2类:Msg
和Task
是1对1.
如果我尝试保存Msg实例而不设置任务实例,我得到.
org.hibernate.PropertyValueException: not-null property references a null or transient value: entity3.Msg.task
Run Code Online (Sandbox Code Playgroud)
如何在没有任务的情况下启用保存Msg?我在Msg的映射文件中有这个,但它没有帮助
<many-to-one class="entity3.Task" fetch="select" name="task" not-null="false">
<column name="TaskID" not-null="true" unique="true"/>
</many-to-one>
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我有一种方法可以在玻璃窗格上绘制动画图像,以模拟图标的脉冲.它需要一个图像(我使用组件的图标)和边界(按钮fe).我需要这个区域:
我知道按钮有getBounds()
,标签有类似的东西吗?或者也许是Icon的坐标.两者都不错.
我使用xjc创建了一些类.
public class MyType {
@XmlElementRefs({
@XmlElementRef(name = "MyInnerType", type = JAXBElement.class, required = false),
})
@XmlMixed
protected List<Serializable> content;
public List<Serializable> getContent() {
if (content == null) {
content = new ArrayList<Serializable>();
}
return this.content;
}
}
Run Code Online (Sandbox Code Playgroud)
但我不能使用添加内部元素
getContent().add(newItem);
Run Code Online (Sandbox Code Playgroud)
因为MyInnerType不是Serializable.为什么它不是对象列表?我如何添加内部元素?
我在为新实体生成id时遇到了麻烦,我尝试过:
@Id
@GeneratedValue
private Long myId;
Run Code Online (Sandbox Code Playgroud)
和
@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
private Long myId;
Run Code Online (Sandbox Code Playgroud)
但是entityManager.persist
我得到了Table "SEQUENCE" not found
纯粹的冬眠generator class="increment"
对我来说很好.
我在Table模型中有这个代码:
public class DocumentProjectTableModel extends AbstractTableModel{
private List<MyDocument> myDocuments;
public String getValueAt(int row, int column) {
String toReturn = null;
MyDocument myDocument = myDocuments.get(row);
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
switch (column) {
case 0:
if(myDocument.getProject().getRegDate()!=null) toReturn = format.format(myDocument.getProject().getRegDate());
break;
case 1:
toReturn = myDocument.getProject().getRegNum();
break;
case 2:
toReturn = myDocument.getProject().getDescription();
break;
case 3:
toReturn = myDocument.getProject().getShortName();
break;
case 4:
toReturn = myDocument.getProject().getSecondName()+myDocument.getProject().getFirstName()+myDocument.getProject().getMiddleName();
break;
}
return toReturn;
}
// some other stuff is not shown
Run Code Online (Sandbox Code Playgroud)
我想更改每一行的背景颜色,例如,如果myDocument.getIsRegistered() == true
,我希望此行有黄色背景,如果myDocument.getIsValid …